ZGlmZiAtLWdpdCBhL2NwdS9hcm0xMTM2L214MzEvc2VyaWFsLmMgYi9jcHUvYXJtMTEzNi9teDMxL3NlcmlhbC5jCmluZGV4IGE4MjliYTcuLjFjYWQ4ZjkgMTAwNjQ0Ci0tLSBhL2NwdS9hcm0xMTM2L214MzEvc2VyaWFsLmMKKysrIGIvY3B1L2FybTExMzYvbXgzMS9zZXJpYWwuYwpAQCAtNzcsOSArNzcsOSBAQAogI2RlZmluZSAgVUNSMV9VQVJUQ0xLRU4gICgxPDwyKQkgLyogVUFSVCBjbG9jayBlbmFibGVkICovCiAjZGVmaW5lICBVQ1IxX0RPWkUgICAgICAgKDE8PDEpCSAvKiBEb3plICovCiAjZGVmaW5lICBVQ1IxX1VBUlRFTiAgICAgKDE8PDApCSAvKiBVQVJUIGVuYWJsZWQgKi8KLSNkZWZpbmUgIFVDUjJfRVNDSSAgICAgCSAoMTw8MTUpIC8qIEVzY2FwZSBzZXEgaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSAgVUNSMl9JUlRTICAJICgxPDwxNCkgLyogSWdub3JlIFJUUyBwaW4gKi8KLSNkZWZpbmUgIFVDUjJfQ1RTQyAgCSAoMTw8MTMpIC8qIENUUyBwaW4gY29udHJvbCAqLworI2RlZmluZSAgVUNSMl9FU0NJCSAoMTw8MTUpIC8qIEVzY2FwZSBzZXEgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSMl9JUlRTCSAoMTw8MTQpIC8qIElnbm9yZSBSVFMgcGluICovCisjZGVmaW5lICBVQ1IyX0NUU0MJICgxPDwxMykgLyogQ1RTIHBpbiBjb250cm9sICovCiAjZGVmaW5lICBVQ1IyX0NUUyAgICAgICAgKDE8PDEyKSAvKiBDbGVhciB0byBzZW5kICovCiAjZGVmaW5lICBVQ1IyX0VTQ0VOICAgICAgKDE8PDExKSAvKiBFc2NhcGUgZW5hYmxlICovCiAjZGVmaW5lICBVQ1IyX1BSRU4gICAgICAgKDE8PDgpICAvKiBQYXJpdHkgZW5hYmxlICovCkBAIC04OSw4ICs4OSw4IEBACiAjZGVmaW5lICBVQ1IyX1JUU0VOICAgICAgKDE8PDQpCSAvKiBSZXF1ZXN0IHRvIHNlbmQgaW50ZXJydXB0IGVuYWJsZSAqLwogI2RlZmluZSAgVUNSMl9UWEVOICAgICAgICgxPDwyKQkgLyogVHJhbnNtaXR0ZXIgZW5hYmxlZCAqLwogI2RlZmluZSAgVUNSMl9SWEVOICAgICAgICgxPDwxKQkgLyogUmVjZWl2ZXIgZW5hYmxlZCAqLwotI2RlZmluZSAgVUNSMl9TUlNUIAkgKDE8PDApCSAvKiBTVyByZXNldCAqLwotI2RlZmluZSAgVUNSM19EVFJFTiAJICgxPDwxMykgLyogRFRSIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjJfU1JTVAkgKDE8PDApCSAvKiBTVyByZXNldCAqLworI2RlZmluZSAgVUNSM19EVFJFTgkgKDE8PDEzKSAvKiBEVFIgaW50ZXJydXB0IGVuYWJsZSAqLwogI2RlZmluZSAgVUNSM19QQVJFUlJFTiAgICgxPDwxMikgLyogUGFyaXR5IGVuYWJsZSAqLwogI2RlZmluZSAgVUNSM19GUkFFUlJFTiAgICgxPDwxMSkgLyogRnJhbWUgZXJyb3IgaW50ZXJydXB0IGVuYWJsZSAqLwogI2RlZmluZSAgVUNSM19EU1IgICAgICAgICgxPDwxMCkgLyogRGF0YSBzZXQgcmVhZHkgKi8KQEAgLTEwMCw1MSArMTAwLDUxIEBACiAjZGVmaW5lICBVQ1IzX1JYRFNFTgkgKDE8PDYpICAvKiBSZWNlaXZlIHN0YXR1cyBpbnRlcnJ1cHQgZW5hYmxlICovCiAjZGVmaW5lICBVQ1IzX0FJUklOVEVOICAgKDE8PDUpICAvKiBBc3luYyBJUiB3YWtlIGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgIFVDUjNfQVdBS0VOCSAoMTw8NCkgIC8qIEFzeW5jIHdha2UgaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSAgVUNSM19SRUYyNSAJICgxPDwzKSAgLyogUmVmIGZyZXEgMjUgTUh6ICovCi0jZGVmaW5lICBVQ1IzX1JFRjMwIAkgKDE8PDIpICAvKiBSZWYgRnJlcSAzMCBNSHogKi8KLSNkZWZpbmUgIFVDUjNfSU5WVCAgCSAoMTw8MSkgIC8qIEludmVydGVkIEluZnJhcmVkIHRyYW5zbWlzc2lvbiAqLwotI2RlZmluZSAgVUNSM19CUEVOICAJICgxPDwwKSAgLyogUHJlc2V0IHJlZ2lzdGVycyBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjNfUkVGMjUJICgxPDwzKSAgLyogUmVmIGZyZXEgMjUgTUh6ICovCisjZGVmaW5lICBVQ1IzX1JFRjMwCSAoMTw8MikgIC8qIFJlZiBGcmVxIDMwIE1IeiAqLworI2RlZmluZSAgVUNSM19JTlZUCSAoMTw8MSkgIC8qIEludmVydGVkIEluZnJhcmVkIHRyYW5zbWlzc2lvbiAqLworI2RlZmluZSAgVUNSM19CUEVOCSAoMTw8MCkgIC8qIFByZXNldCByZWdpc3RlcnMgZW5hYmxlICovCiAjZGVmaW5lICBVQ1I0X0NUU1RMXzMyICAgKDMyPDwxMCkgLyogQ1RTIHRyaWdnZXIgbGV2ZWwgKDMyIGNoYXJzKSAqLwotI2RlZmluZSAgVUNSNF9JTlZSICAJICgxPDw5KSAgLyogSW52ZXJ0ZWQgaW5mcmFyZWQgcmVjZXB0aW9uICovCi0jZGVmaW5lICBVQ1I0X0VOSVJJIAkgKDE8PDgpICAvKiBTZXJpYWwgaW5mcmFyZWQgaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSAgVUNSNF9XS0VOICAJICgxPDw3KSAgLyogV2FrZSBpbnRlcnJ1cHQgZW5hYmxlICovCi0jZGVmaW5lICBVQ1I0X1JFRjE2IAkgKDE8PDYpICAvKiBSZWYgZnJlcSAxNiBNSHogKi8KLSNkZWZpbmUgIFVDUjRfSVJTQyAgCSAoMTw8NSkgIC8qIElSIHNwZWNpYWwgY2FzZSAqLwotI2RlZmluZSAgVUNSNF9UQ0VOICAJICgxPDwzKSAgLyogVHJhbnNtaXQgY29tcGxldGUgaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSAgVUNSNF9CS0VOICAJICgxPDwyKSAgLyogQnJlYWsgY29uZGl0aW9uIGludGVycnVwdCBlbmFibGUgKi8KLSNkZWZpbmUgIFVDUjRfT1JFTiAgCSAoMTw8MSkgIC8qIFJlY2VpdmVyIG92ZXJydW4gaW50ZXJydXB0IGVuYWJsZSAqLwotI2RlZmluZSAgVUNSNF9EUkVOICAJICgxPDwwKSAgLyogUmVjdiBkYXRhIHJlYWR5IGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjRfSU5WUgkgKDE8PDkpICAvKiBJbnZlcnRlZCBpbmZyYXJlZCByZWNlcHRpb24gKi8KKyNkZWZpbmUgIFVDUjRfRU5JUkkJICgxPDw4KSAgLyogU2VyaWFsIGluZnJhcmVkIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjRfV0tFTgkgKDE8PDcpICAvKiBXYWtlIGludGVycnVwdCBlbmFibGUgKi8KKyNkZWZpbmUgIFVDUjRfUkVGMTYJICgxPDw2KSAgLyogUmVmIGZyZXEgMTYgTUh6ICovCisjZGVmaW5lICBVQ1I0X0lSU0MJICgxPDw1KSAgLyogSVIgc3BlY2lhbCBjYXNlICovCisjZGVmaW5lICBVQ1I0X1RDRU4JICgxPDwzKSAgLyogVHJhbnNtaXQgY29tcGxldGUgaW50ZXJydXB0IGVuYWJsZSAqLworI2RlZmluZSAgVUNSNF9CS0VOCSAoMTw8MikgIC8qIEJyZWFrIGNvbmRpdGlvbiBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1I0X09SRU4JICgxPDwxKSAgLyogUmVjZWl2ZXIgb3ZlcnJ1biBpbnRlcnJ1cHQgZW5hYmxlICovCisjZGVmaW5lICBVQ1I0X0RSRU4JICgxPDwwKSAgLyogUmVjdiBkYXRhIHJlYWR5IGludGVycnVwdCBlbmFibGUgKi8KICNkZWZpbmUgIFVGQ1JfUlhUTF9TSEYgICAwICAgICAgIC8qIFJlY2VpdmVyIHRyaWdnZXIgbGV2ZWwgc2hpZnQgKi8KICNkZWZpbmUgIFVGQ1JfUkZESVYgICAgICAoNzw8NykgIC8qIFJlZmVyZW5jZSBmcmVxIGRpdmlkZXIgbWFzayAqLwogI2RlZmluZSAgVUZDUl9UWFRMX1NIRiAgIDEwICAgICAgLyogVHJhbnNtaXR0ZXIgdHJpZ2dlciBsZXZlbCBzaGlmdCAqLwogI2RlZmluZSAgVVNSMV9QQVJJVFlFUlIgICgxPDwxNSkgLyogUGFyaXR5IGVycm9yIGludGVycnVwdCBmbGFnICovCi0jZGVmaW5lICBVU1IxX1JUU1MgIAkgKDE8PDE0KSAvKiBSVFMgcGluIHN0YXR1cyAqLwotI2RlZmluZSAgVVNSMV9UUkRZICAJICgxPDwxMykgLyogVHJhbnNtaXR0ZXIgcmVhZHkgaW50ZXJydXB0L2RtYSBmbGFnICovCi0jZGVmaW5lICBVU1IxX1JUU0QgIAkgKDE8PDEyKSAvKiBSVFMgZGVsdGEgKi8KLSNkZWZpbmUgIFVTUjFfRVNDRiAgCSAoMTw8MTEpIC8qIEVzY2FwZSBzZXEgaW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIFVTUjFfUlRTUwkgKDE8PDE0KSAvKiBSVFMgcGluIHN0YXR1cyAqLworI2RlZmluZSAgVVNSMV9UUkRZCSAoMTw8MTMpIC8qIFRyYW5zbWl0dGVyIHJlYWR5IGludGVycnVwdC9kbWEgZmxhZyAqLworI2RlZmluZSAgVVNSMV9SVFNECSAoMTw8MTIpIC8qIFJUUyBkZWx0YSAqLworI2RlZmluZSAgVVNSMV9FU0NGCSAoMTw8MTEpIC8qIEVzY2FwZSBzZXEgaW50ZXJydXB0IGZsYWcgKi8KICNkZWZpbmUgIFVTUjFfRlJBTUVSUiAgICAoMTw8MTApIC8qIEZyYW1lIGVycm9yIGludGVycnVwdCBmbGFnICovCiAjZGVmaW5lICBVU1IxX1JSRFkgICAgICAgKDE8PDkpCSAvKiBSZWNlaXZlciByZWFkeSBpbnRlcnJ1cHQvZG1hIGZsYWcgKi8KICNkZWZpbmUgIFVTUjFfVElNRU9VVCAgICAoMTw8NykJIC8qIFJlY2VpdmUgdGltZW91dCBpbnRlcnJ1cHQgc3RhdHVzICovCi0jZGVmaW5lICBVU1IxX1JYRFMgIAkgKDE8PDYpCSAvKiBSZWNlaXZlciBpZGxlIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBVU1IxX1JYRFMJICgxPDw2KQkgLyogUmVjZWl2ZXIgaWRsZSBpbnRlcnJ1cHQgZmxhZyAqLwogI2RlZmluZSAgVVNSMV9BSVJJTlQJICgxPDw1KQkgLyogQXN5bmMgSVIgd2FrZSBpbnRlcnJ1cHQgZmxhZyAqLwotI2RlZmluZSAgVVNSMV9BV0FLRSAJICgxPDw0KQkgLyogQXlzbmMgd2FrZSBpbnRlcnJ1cHQgZmxhZyAqLwotI2RlZmluZSAgVVNSMl9BREVUICAJICgxPDwxNSkgLyogQXV0byBiYXVkIHJhdGUgZGV0ZWN0IGNvbXBsZXRlICovCi0jZGVmaW5lICBVU1IyX1RYRkUgIAkgKDE8PDE0KSAvKiBUcmFuc21pdCBidWZmZXIgRklGTyBlbXB0eSAqLwotI2RlZmluZSAgVVNSMl9EVFJGICAJICgxPDwxMykgLyogRFRSIGVkZ2UgaW50ZXJydXB0IGZsYWcgKi8KLSNkZWZpbmUgIFVTUjJfSURMRSAgCSAoMTw8MTIpIC8qIElkbGUgY29uZGl0aW9uICovCi0jZGVmaW5lICBVU1IyX0lSSU5UIAkgKDE8PDgpCSAvKiBTZXJpYWwgaW5mcmFyZWQgaW50ZXJydXB0IGZsYWcgKi8KLSNkZWZpbmUgIFVTUjJfV0FLRSAgCSAoMTw8NykJIC8qIFdha2UgKi8KLSNkZWZpbmUgIFVTUjJfUlRTRiAgCSAoMTw8NCkJIC8qIFJUUyBlZGdlIGludGVycnVwdCBmbGFnICovCi0jZGVmaW5lICBVU1IyX1RYREMgIAkgKDE8PDMpCSAvKiBUcmFuc21pdHRlciBjb21wbGV0ZSAqLwotI2RlZmluZSAgVVNSMl9CUkNEICAJICgxPDwyKQkgLyogQnJlYWsgY29uZGl0aW9uICovCisjZGVmaW5lICBVU1IxX0FXQUtFCSAoMTw8NCkJIC8qIEF5c25jIHdha2UgaW50ZXJydXB0IGZsYWcgKi8KKyNkZWZpbmUgIFVTUjJfQURFVAkgKDE8PDE1KSAvKiBBdXRvIGJhdWQgcmF0ZSBkZXRlY3QgY29tcGxldGUgKi8KKyNkZWZpbmUgIFVTUjJfVFhGRQkgKDE8PDE0KSAvKiBUcmFuc21pdCBidWZmZXIgRklGTyBlbXB0eSAqLworI2RlZmluZSAgVVNSMl9EVFJGCSAoMTw8MTMpIC8qIERUUiBlZGdlIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBVU1IyX0lETEUJICgxPDwxMikgLyogSWRsZSBjb25kaXRpb24gKi8KKyNkZWZpbmUgIFVTUjJfSVJJTlQJICgxPDw4KQkgLyogU2VyaWFsIGluZnJhcmVkIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBVU1IyX1dBS0UJICgxPDw3KQkgLyogV2FrZSAqLworI2RlZmluZSAgVVNSMl9SVFNGCSAoMTw8NCkJIC8qIFJUUyBlZGdlIGludGVycnVwdCBmbGFnICovCisjZGVmaW5lICBVU1IyX1RYREMJICgxPDwzKQkgLyogVHJhbnNtaXR0ZXIgY29tcGxldGUgKi8KKyNkZWZpbmUgIFVTUjJfQlJDRAkgKDE8PDIpCSAvKiBCcmVhayBjb25kaXRpb24gKi8KICNkZWZpbmUgIFVTUjJfT1JFICAgICAgICAoMTw8MSkJIC8qIE92ZXJydW4gZXJyb3IgKi8KICNkZWZpbmUgIFVTUjJfUkRSICAgICAgICAoMTw8MCkJIC8qIFJlY3YgZGF0YSByZWFkeSAqLwogI2RlZmluZSAgVVRTX0ZSQ1BFUlIJICgxPDwxMykgLyogRm9yY2UgcGFyaXR5IGVycm9yICovCiAjZGVmaW5lICBVVFNfTE9PUCAgICAgICAgKDE8PDEyKSAvKiBMb29wIHR4IGFuZCByeCAqLwogI2RlZmluZSAgVVRTX1RYRU1QVFkJICgxPDw2KQkgLyogVHhGSUZPIGVtcHR5ICovCiAjZGVmaW5lICBVVFNfUlhFTVBUWQkgKDE8PDUpCSAvKiBSeEZJRk8gZW1wdHkgKi8KLSNkZWZpbmUgIFVUU19UWEZVTEwgCSAoMTw8NCkJIC8qIFR4RklGTyBmdWxsICovCi0jZGVmaW5lICBVVFNfUlhGVUxMIAkgKDE8PDMpCSAvKiBSeEZJRk8gZnVsbCAqLworI2RlZmluZSAgVVRTX1RYRlVMTAkgKDE8PDQpCSAvKiBUeEZJRk8gZnVsbCAqLworI2RlZmluZSAgVVRTX1JYRlVMTAkgKDE8PDMpCSAvKiBSeEZJRk8gZnVsbCAqLwogI2RlZmluZSAgVVRTX1NPRlRSU1QJICgxPDwwKQkgLyogU29mdHdhcmUgcmVzZXQgKi8KIAogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CmRpZmYgLS1naXQgYS9jcHUvYXJtMTEzNi9zdGFydC5TIGIvY3B1L2FybTExMzYvc3RhcnQuUwppbmRleCA1NjAwOWQwLi41MWI2NjRkIDEwMDY0NAotLS0gYS9jcHUvYXJtMTEzNi9zdGFydC5TCisrKyBiL2NwdS9hcm0xMTM2L3N0YXJ0LlMKQEAgLTEzMSw3ICsxMzEsNyBAQAogI2lmZGVmIENPTkZJR19PTUFQMjQyMEg0CiAgICAgICAgLyogQ29weSB2ZWN0b3JzIHRvIG1hc2sgUk9NIGluZGlyZWN0IGFkZHIgKi8KIAlhZHIJcjAsIF9zdGFydAkJLyogcjAgPC0gY3VycmVudCBwb3NpdGlvbiBvZiBjb2RlICAgKi8KLSAJCWFkZCAgICAgcjAsIHIwLCAjNAkJCQkvKiBza2lwIHJlc2V0IHZlY3RvcgkJCSovCisJCWFkZCAgICAgcjAsIHIwLCAjNAkJCQkvKiBza2lwIHJlc2V0IHZlY3RvcgkJCSovCiAJbW92CXIyLCAjNjQJCQkvKiByMiA8LSBzaXplIHRvIGNvcHkgICovCiAJYWRkCXIyLCByMCwgcjIJCS8qIHIyIDwtIHNvdXJjZSBlbmQgYWRkcmVzcwkgICAgKi8KIAltb3YJcjEsICNTUkFNX09GRlNFVDAJICAvKiBidWlsZCB2ZWN0IGFkZHIgKi8KZGlmZiAtLWdpdCBhL2NwdS9hcm03MjB0L2ludGVycnVwdHMuYyBiL2NwdS9hcm03MjB0L2ludGVycnVwdHMuYwppbmRleCA0NzU2MDdkLi45ODU0MDE2IDEwMDY0NAotLS0gYS9jcHUvYXJtNzIwdC9pbnRlcnJ1cHRzLmMKKysrIGIvY3B1L2FybTcyMHQvaW50ZXJydXB0cy5jCkBAIC0xODIsNyArMTgyLDcgQEAKIAlQVVQzMihUMElSLCAwKTsJCS8qIGRpc2FibGUgYWxsIHRpbWVyMCBpbnRlcnJ1cHRzICovCiAJUFVUMzIoVDBUQ1IsIDApOwkvKiBkaXNhYmxlIHRpbWVyMCAqLwogCVBVVDMyKFQwUFIsIENGR19TWVNfQ0xLX0ZSRVEgLyBDRkdfSFopOwotIAlQVVQzMihUME1DUiwgMCk7CisJUFVUMzIoVDBNQ1IsIDApOwogCVBVVDMyKFQwVEMsIDApOwogCVBVVDMyKFQwVENSLCAxKTsJLyogZW5hYmxlIHRpbWVyMCAqLwogCmRpZmYgLS1naXQgYS9jcHUvYXJtNzIwdC9zZXJpYWxfbmV0YXJtLmMgYi9jcHUvYXJtNzIwdC9zZXJpYWxfbmV0YXJtLmMKaW5kZXggYmM2YmYzMC4uYTU5M2NiYyAxMDA2NDQKLS0tIGEvY3B1L2FybTcyMHQvc2VyaWFsX25ldGFybS5jCisrKyBiL2NwdS9hcm03MjB0L3NlcmlhbF9uZXRhcm0uYwpAQCAtNDQsNyArNDQsNyBAQAogI2VuZGlmCiAKIC8qIHdhaXQgdW50aWwgdHJhbnNtaXR0ZXIgaXMgcmVhZHkgZm9yIGFub3RoZXIgY2hhcmFjdGVyICovCi0jZGVmaW5lIFRYV0FJVFJEWShyZWdpc3RlcnMpIAkJCQkJCQlcCisjZGVmaW5lIFRYV0FJVFJEWShyZWdpc3RlcnMpCQkJCQkJCVwKIHsJCQkJCQkJCQkJXAogCXVsb25nIHRtbyA9IGdldF90aW1lcigwKSArIDEgKiBDRkdfSFo7CQkJCQlcCiAJd2hpbGUgKCgocmVnaXN0ZXJzKS0+c3RhdHVzX2EgJiBORVRBUk1fU0VSX1NUQVRBX1RYX1JEWSkgPT0gMCApCXsJXApkaWZmIC0tZ2l0IGEvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9ldGhlci5jIGIvY3B1L2FybTkyMHQvYXQ5MXJtOTIwMC9ldGhlci5jCmluZGV4IGM4ZjU2YWEuLmYyMGUwNzAgMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjB0L2F0OTFybTkyMDAvZXRoZXIuYworKysgYi9jcHUvYXJtOTIwdC9hdDkxcm05MjAwL2V0aGVyLmMKQEAgLTEwNSw3ICsxMDUsNyBAQAogICogQXJndW1lbnRzOgogICoJZGV2IC0gcG9pbnRlciB0byBzdHJ1Y3QgbmV0X2RldmljZQogICoJUmVnaXN0ZXJBZGRyZXNzIC0gdW5zaWduZWQgY2hhcgotICogCXBJbnB1dCAtIHBvaW50ZXIgdG8gdmFsdWUgcmVhZCBmcm9tIHJlZ2lzdGVyCisgKglwSW5wdXQgLSBwb2ludGVyIHRvIHZhbHVlIHJlYWQgZnJvbSByZWdpc3RlcgogICogUmV0dXJuIHZhbHVlOgogICoJVFJVRSAtIGlmIGRhdGEgcmVhZCBzdWNjZXNzZnVsbHkKICAqLwpAQCAtMTM0LDcgKzEzNCw3IEBACiAgKiBBcmd1bWVudHM6CiAgKglkZXYgLSBwb2ludGVyIHRvIHN0cnVjdCBuZXRfZGV2aWNlCiAgKglSZWdpc3RlckFkZHJlc3MgLSB1bnNpZ25lZCBjaGFyCi0gKiAJcE91dHB1dCAtIHBvaW50ZXIgdG8gdmFsdWUgdG8gYmUgd3JpdHRlbiBpbiB0aGUgcmVnaXN0ZXIKKyAqCXBPdXRwdXQgLSBwb2ludGVyIHRvIHZhbHVlIHRvIGJlIHdyaXR0ZW4gaW4gdGhlIHJlZ2lzdGVyCiAgKiBSZXR1cm4gdmFsdWU6CiAgKglUUlVFIC0gaWYgZGF0YSByZWFkIHN1Y2Nlc3NmdWxseQogICovCmRpZmYgLS1naXQgYS9jcHUvYXJtOTIwdC9pbXgvc2VyaWFsLmMgYi9jcHUvYXJtOTIwdC9pbXgvc2VyaWFsLmMKaW5kZXggOWRiYWE1Ni4uNmM1NmFjYiAxMDA2NDQKLS0tIGEvY3B1L2FybTkyMHQvaW14L3NlcmlhbC5jCisrKyBiL2NwdS9hcm05MjB0L2lteC9zZXJpYWwuYwpAQCAtMTE1LDcgKzExNSw3IEBACiAJLyogRW5hYmxlIEZJRk9zICovCiAJYmFzZS0+dWNyMiB8PSBVQ1IyX1NSU1QgfCBVQ1IyX1JYRU4gfCBVQ1IyX1RYRU47CiAKLSAgCS8qIENsZWFyIHN0YXR1cyBmbGFncyAqLworCS8qIENsZWFyIHN0YXR1cyBmbGFncyAqLwogCWJhc2UtPnVzcjIgfD0gVVNSMl9BREVUICB8CiAJICAgICAgICAgIFVTUjJfRFRSRiAgfAogCSAgICAgICAgICBVU1IyX0lETEUgIHwKQEAgLTEyNiw3ICsxMjYsNyBAQAogCSAgICAgICAgICBVU1IyX09SRSAgIHwKIAkgICAgICAgICAgVVNSMl9SRFI7CiAKLSAgCS8qIENsZWFyIHN0YXR1cyBmbGFncyAqLworCS8qIENsZWFyIHN0YXR1cyBmbGFncyAqLwogCWJhc2UtPnVzcjEgfD0gVVNSMV9QQVJJVFlFUlIgfAogCSAgICAgICAgICBVU1IxX1JUU0QgICAgICB8CiAJICAgICAgICAgIFVTUjFfRVNDRiAgICAgIHwKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuYyBiL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuYwppbmRleCA5NmU0M2QwLi5iNTdjMmQ4IDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9zM2MyNHgwL3VzYl9vaGNpLmMKKysrIGIvY3B1L2FybTkyMHQvczNjMjR4MC91c2Jfb2hjaS5jCkBAIC05NzEsMTMgKzk3MSwxMyBAQAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCi0jZGVmaW5lIE9LKHgpIAkJCWxlbiA9ICh4KTsgYnJlYWsKKyNkZWZpbmUgT0soeCkJCQlsZW4gPSAoeCk7IGJyZWFrCiAjaWZkZWYgREVCVUcKLSNkZWZpbmUgV1JfUkhfU1RBVCh4KSAJCXtpbmZvKCJXUjpzdGF0dXMgJSM4eCIsICh4KSk7d3JpdGVsKCh4KSwgJmdvaGNpLnJlZ3MtPnJvb3RodWIuc3RhdHVzKTt9Ci0jZGVmaW5lIFdSX1JIX1BPUlRTVEFUKHgpIAl7aW5mbygiV1I6cG9ydHN0YXR1c1slZF0gJSM4eCIsIHdJbmRleC0xLCAoeCkpO3dyaXRlbCgoeCksICZnb2hjaS5yZWdzLT5yb290aHViLnBvcnRzdGF0dXNbd0luZGV4LTFdKTt9CisjZGVmaW5lIFdSX1JIX1NUQVQoeCkJCXtpbmZvKCJXUjpzdGF0dXMgJSM4eCIsICh4KSk7d3JpdGVsKCh4KSwgJmdvaGNpLnJlZ3MtPnJvb3RodWIuc3RhdHVzKTt9CisjZGVmaW5lIFdSX1JIX1BPUlRTVEFUKHgpCXtpbmZvKCJXUjpwb3J0c3RhdHVzWyVkXSAlIzh4Iiwgd0luZGV4LTEsICh4KSk7d3JpdGVsKCh4KSwgJmdvaGNpLnJlZ3MtPnJvb3RodWIucG9ydHN0YXR1c1t3SW5kZXgtMV0pO30KICNlbHNlCi0jZGVmaW5lIFdSX1JIX1NUQVQoeCkgCQl3cml0ZWwoKHgpLCAmZ29oY2kucmVncy0+cm9vdGh1Yi5zdGF0dXMpCi0jZGVmaW5lIFdSX1JIX1BPUlRTVEFUKHgpIAl3cml0ZWwoKHgpLCAmZ29oY2kucmVncy0+cm9vdGh1Yi5wb3J0c3RhdHVzW3dJbmRleC0xXSkKKyNkZWZpbmUgV1JfUkhfU1RBVCh4KQkJd3JpdGVsKCh4KSwgJmdvaGNpLnJlZ3MtPnJvb3RodWIuc3RhdHVzKQorI2RlZmluZSBXUl9SSF9QT1JUU1RBVCh4KQl3cml0ZWwoKHgpLCAmZ29oY2kucmVncy0+cm9vdGh1Yi5wb3J0c3RhdHVzW3dJbmRleC0xXSkKICNlbmRpZgogI2RlZmluZSBSRF9SSF9TVEFUCQlyb290aHViX3N0YXR1cygmZ29oY2kpCiAjZGVmaW5lIFJEX1JIX1BPUlRTVEFUCQlyb290aHViX3BvcnRzdGF0dXMoJmdvaGNpLHdJbmRleC0xKQpAQCAtMTE2Myw3ICsxMTYzLDcgQEAKIAkJICAgIGRhdGFfYnVmIFsxXSA9IDB4Mjk7CiAJCSAgICBkYXRhX2J1ZiBbMl0gPSB0ZW1wICYgUkhfQV9ORFA7CiAJCSAgICBkYXRhX2J1ZiBbM10gPSAwOwotCQkgICAgaWYgKHRlbXAgJiBSSF9BX1BTTSkgCS8qIHBlci1wb3J0IHBvd2VyIHN3aXRjaGluZz8gKi8KKwkJICAgIGlmICh0ZW1wICYgUkhfQV9QU00pCS8qIHBlci1wb3J0IHBvd2VyIHN3aXRjaGluZz8gKi8KIAkJCWRhdGFfYnVmIFszXSB8PSAweDE7CiAJCSAgICBpZiAodGVtcCAmIFJIX0FfTk9DUCkJLyogbm8gb3ZlcmN1cnJlbnQgcmVwb3J0aW5nPyAqLwogCQkJZGF0YV9idWYgWzNdIHw9IDB4MTA7CkBAIC0xMTg4LDkgKzExODgsOSBAQAogCQkgICAgT0sgKGxlbik7CiAJCX0KIAotCWNhc2UgUkhfR0VUX0NPTkZJR1VSQVRJT046IAkqKF9fdTggKikgZGF0YV9idWYgPSAweDAxOyBPSyAoMSk7CisJY2FzZSBSSF9HRVRfQ09ORklHVVJBVElPTjoJKihfX3U4ICopIGRhdGFfYnVmID0gMHgwMTsgT0sgKDEpOwogCi0JY2FzZSBSSF9TRVRfQ09ORklHVVJBVElPTjogCVdSX1JIX1NUQVQgKDB4MTAwMDApOyBPSyAoMCk7CisJY2FzZSBSSF9TRVRfQ09ORklHVVJBVElPTjoJV1JfUkhfU1RBVCAoMHgxMDAwMCk7IE9LICgwKTsKIAogCWRlZmF1bHQ6CiAJCWRiZyAoInVuc3VwcG9ydGVkIHJvb3QgaHViIGNvbW1hbmQiKTsKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuaCBiL2NwdS9hcm05MjB0L3MzYzI0eDAvdXNiX29oY2kuaAppbmRleCA1ZTlhMGZkLi4zYWY1ZmNhIDEwMDY0NAotLS0gYS9jcHUvYXJtOTIwdC9zM2MyNHgwL3VzYl9vaGNpLmgKKysrIGIvY3B1L2FybTkyMHQvczNjMjR4MC91c2Jfb2hjaS5oCkBAIC0xMSwzMCArMTEsMzAgQEAKIHN0YXRpYyBpbnQgY2NfdG9fZXJyb3JbMTZdID0gewogCiAvKiBtYXBwaW5nIG9mIHRoZSBPSENJIENDIHN0YXR1cyB0byBlcnJvciBjb2RlcyAqLwotCS8qIE5vICBFcnJvciAgKi8gICAgICAgICAgICAgICAwLAotCS8qIENSQyBFcnJvciAgKi8gICAgICAgICAgICAgICBVU0JfU1RfQ1JDX0VSUiwKLQkvKiBCaXQgU3R1ZmYgICovICAgICAgICAgICAgICAgVVNCX1NUX0JJVF9FUlIsCi0JLyogRGF0YSBUb2dnICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9DUkNfRVJSLAotCS8qIFN0YWxsICAgICAgKi8gICAgICAgICAgICAgICBVU0JfU1RfU1RBTExFRCwKLQkvKiBEZXZOb3RSZXNwICovICAgICAgICAgICAgICAgLTEsCi0JLyogUElEQ2hlY2sgICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9CSVRfRVJSLAotCS8qIFVuRXhwUElEICAgKi8gICAgICAgICAgICAgICBVU0JfU1RfQklUX0VSUiwKLQkvKiBEYXRhT3ZlciAgICovICAgICAgICAgICAgICAgVVNCX1NUX0JVRl9FUlIsCi0JLyogRGF0YVVuZGVyICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9CVUZfRVJSLAotCS8qIHJlc2VydmQgICAgKi8gICAgICAgICAgICAgICAtMSwKLQkvKiByZXNlcnZkICAgICovICAgICAgICAgICAgICAgLTEsCi0JLyogQnVmZmVyT3ZlciAqLyAgICAgICAgICAgICAgIFVTQl9TVF9CVUZfRVJSLAotCS8qIEJ1ZmZVbmRlciAgKi8gICAgICAgICAgICAgICBVU0JfU1RfQlVGX0VSUiwKLQkvKiBOb3QgQWNjZXNzICovICAgICAgICAgICAgICAgLTEsCi0JLyogTm90IEFjY2VzcyAqLyAgICAgICAgICAgICAgIC0xCisJLyogTm8gIEVycm9yICAqLwkgICAgICAgMCwKKwkvKiBDUkMgRXJyb3IgICovCSAgICAgICBVU0JfU1RfQ1JDX0VSUiwKKwkvKiBCaXQgU3R1ZmYgICovCSAgICAgICBVU0JfU1RfQklUX0VSUiwKKwkvKiBEYXRhIFRvZ2cgICovCSAgICAgICBVU0JfU1RfQ1JDX0VSUiwKKwkvKiBTdGFsbCAgICAgICovCSAgICAgICBVU0JfU1RfU1RBTExFRCwKKwkvKiBEZXZOb3RSZXNwICovCSAgICAgICAtMSwKKwkvKiBQSURDaGVjayAgICovCSAgICAgICBVU0JfU1RfQklUX0VSUiwKKwkvKiBVbkV4cFBJRCAgICovCSAgICAgICBVU0JfU1RfQklUX0VSUiwKKwkvKiBEYXRhT3ZlciAgICovCSAgICAgICBVU0JfU1RfQlVGX0VSUiwKKwkvKiBEYXRhVW5kZXIgICovCSAgICAgICBVU0JfU1RfQlVGX0VSUiwKKwkvKiByZXNlcnZkICAgICovCSAgICAgICAtMSwKKwkvKiByZXNlcnZkICAgICovCSAgICAgICAtMSwKKwkvKiBCdWZmZXJPdmVyICovCSAgICAgICBVU0JfU1RfQlVGX0VSUiwKKwkvKiBCdWZmVW5kZXIgICovCSAgICAgICBVU0JfU1RfQlVGX0VSUiwKKwkvKiBOb3QgQWNjZXNzICovCSAgICAgICAtMSwKKwkvKiBOb3QgQWNjZXNzICovCSAgICAgICAtMQogfTsKIAogLyogRUQgU3RhdGVzICovCi0jZGVmaW5lIEVEX05FVyAJCTB4MDAKLSNkZWZpbmUgRURfVU5MSU5LIAkweDAxCisjZGVmaW5lIEVEX05FVwkJMHgwMAorI2RlZmluZSBFRF9VTkxJTksJMHgwMQogI2RlZmluZSBFRF9PUEVSCQkweDAyCiAjZGVmaW5lIEVEX0RFTAkJMHgwNAotI2RlZmluZSBFRF9VUkJfREVMICAJMHgwOAorI2RlZmluZSBFRF9VUkJfREVMCTB4MDgKIAogLyogdXNiX29oY2lfZWQgKi8KIHN0cnVjdCBlZCB7CkBAIC02MCw1MyArNjAsNTMgQEAKIAogCiAvKiBURCBpbmZvIGZpZWxkICovCi0jZGVmaW5lIFREX0NDICAgICAgIDB4ZjAwMDAwMDAKLSNkZWZpbmUgVERfQ0NfR0VUKHRkX3ApICgodGRfcCA+PjI4KSAmIDB4MGYpCi0jZGVmaW5lIFREX0NDX1NFVCh0ZF9wLCBjYykgKHRkX3ApID0gKCh0ZF9wKSAmIDB4MGZmZmZmZmYpIHwgKCgoY2MpICYgMHgwZikgPDwgMjgpCi0jZGVmaW5lIFREX0VDICAgICAgIDB4MEMwMDAwMDAKLSNkZWZpbmUgVERfVCAgICAgICAgMHgwMzAwMDAwMAotI2RlZmluZSBURF9UX0RBVEEwICAweDAyMDAwMDAwCi0jZGVmaW5lIFREX1RfREFUQTEgIDB4MDMwMDAwMDAKLSNkZWZpbmUgVERfVF9UT0dHTEUgMHgwMDAwMDAwMAotI2RlZmluZSBURF9SICAgICAgICAweDAwMDQwMDAwCi0jZGVmaW5lIFREX0RJICAgICAgIDB4MDBFMDAwMDAKLSNkZWZpbmUgVERfRElfU0VUKFgpICgoKFgpICYgMHgwNyk8PCAyMSkKLSNkZWZpbmUgVERfRFAgICAgICAgMHgwMDE4MDAwMAotI2RlZmluZSBURF9EUF9TRVRVUCAweDAwMDAwMDAwCi0jZGVmaW5lIFREX0RQX0lOICAgIDB4MDAxMDAwMDAKLSNkZWZpbmUgVERfRFBfT1VUICAgMHgwMDA4MDAwMAorI2RlZmluZSBURF9DQwkJCTB4ZjAwMDAwMDAKKyNkZWZpbmUgVERfQ0NfR0VUKHRkX3ApCQkoKHRkX3AgPj4yOCkgJiAweDBmKQorI2RlZmluZSBURF9DQ19TRVQodGRfcCwgY2MpCSh0ZF9wKSA9ICgodGRfcCkgJiAweDBmZmZmZmZmKSB8ICgoKGNjKSAmIDB4MGYpIDw8IDI4KQorI2RlZmluZSBURF9FQwkJCTB4MEMwMDAwMDAKKyNkZWZpbmUgVERfVAkJCTB4MDMwMDAwMDAKKyNkZWZpbmUgVERfVF9EQVRBMAkJMHgwMjAwMDAwMAorI2RlZmluZSBURF9UX0RBVEExCQkweDAzMDAwMDAwCisjZGVmaW5lIFREX1RfVE9HR0xFCQkweDAwMDAwMDAwCisjZGVmaW5lIFREX1IJCQkweDAwMDQwMDAwCisjZGVmaW5lIFREX0RJCQkJMHgwMEUwMDAwMAorI2RlZmluZSBURF9ESV9TRVQoWCkJCSgoKFgpICYgMHgwNyk8PCAyMSkKKyNkZWZpbmUgVERfRFAJCQkweDAwMTgwMDAwCisjZGVmaW5lIFREX0RQX1NFVFVQCQkweDAwMDAwMDAwCisjZGVmaW5lIFREX0RQX0lOCQkweDAwMTAwMDAwCisjZGVmaW5lIFREX0RQX09VVAkJMHgwMDA4MDAwMAogCi0jZGVmaW5lIFREX0lTTwkgICAgMHgwMDAxMDAwMAotI2RlZmluZSBURF9ERUwgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIFREX0lTTwkJCTB4MDAwMTAwMDAKKyNkZWZpbmUgVERfREVMCQkJMHgwMDAyMDAwMAogCiAvKiBDQyBDb2RlcyAqLwotI2RlZmluZSBURF9DQ19OT0VSUk9SICAgICAgMHgwMAotI2RlZmluZSBURF9DQ19DUkMgICAgICAgICAgMHgwMQotI2RlZmluZSBURF9DQ19CSVRTVFVGRklORyAgMHgwMgotI2RlZmluZSBURF9DQ19EQVRBVE9HR0xFTSAgMHgwMwotI2RlZmluZSBURF9DQ19TVEFMTCAgICAgICAgMHgwNAotI2RlZmluZSBURF9ERVZOT1RSRVNQICAgICAgMHgwNQotI2RlZmluZSBURF9QSURDSEVDS0ZBSUwgICAgMHgwNgotI2RlZmluZSBURF9VTkVYUEVDVEVEUElEICAgMHgwNwotI2RlZmluZSBURF9EQVRBT1ZFUlJVTiAgICAgMHgwOAotI2RlZmluZSBURF9EQVRBVU5ERVJSVU4gICAgMHgwOQotI2RlZmluZSBURF9CVUZGRVJPVkVSUlVOICAgMHgwQwotI2RlZmluZSBURF9CVUZGRVJVTkRFUlJVTiAgMHgwRAotI2RlZmluZSBURF9OT1RBQ0NFU1NFRCAgICAgMHgwRgorI2RlZmluZSBURF9DQ19OT0VSUk9SCQkweDAwCisjZGVmaW5lIFREX0NDX0NSQwkJMHgwMQorI2RlZmluZSBURF9DQ19CSVRTVFVGRklORwkweDAyCisjZGVmaW5lIFREX0NDX0RBVEFUT0dHTEVNCTB4MDMKKyNkZWZpbmUgVERfQ0NfU1RBTEwJCTB4MDQKKyNkZWZpbmUgVERfREVWTk9UUkVTUAkJMHgwNQorI2RlZmluZSBURF9QSURDSEVDS0ZBSUwJMHgwNgorI2RlZmluZSBURF9VTkVYUEVDVEVEUElECTB4MDcKKyNkZWZpbmUgVERfREFUQU9WRVJSVU4JCTB4MDgKKyNkZWZpbmUgVERfREFUQVVOREVSUlVOCTB4MDkKKyNkZWZpbmUgVERfQlVGRkVST1ZFUlJVTgkweDBDCisjZGVmaW5lIFREX0JVRkZFUlVOREVSUlVOCTB4MEQKKyNkZWZpbmUgVERfTk9UQUNDRVNTRUQJCTB4MEYKIAogCiAjZGVmaW5lIE1BWFBTVyAxCiAKIHN0cnVjdCB0ZCB7CiAJX191MzIgaHdJTkZPOwotICAJX191MzIgaHdDQlA7CQkvKiBDdXJyZW50IEJ1ZmZlciBQb2ludGVyICovCi0gIAlfX3UzMiBod05leHRURDsJCS8qIE5leHQgVEQgUG9pbnRlciAqLwotICAJX191MzIgaHdCRTsJCS8qIE1lbW9yeSBCdWZmZXIgRW5kIFBvaW50ZXIgKi8KKwlfX3UzMiBod0NCUDsJCS8qIEN1cnJlbnQgQnVmZmVyIFBvaW50ZXIgKi8KKwlfX3UzMiBod05leHRURDsJCS8qIE5leHQgVEQgUG9pbnRlciAqLworCV9fdTMyIGh3QkU7CQkvKiBNZW1vcnkgQnVmZmVyIEVuZCBQb2ludGVyICovCiAKLSAgCV9fdTggdW51c2VkOwotICAJX191OCBpbmRleDsKLSAgCXN0cnVjdCBlZCAqZWQ7Ci0gIAlzdHJ1Y3QgdGQgKm5leHRfZGxfdGQ7CisJX191OCB1bnVzZWQ7CisJX191OCBpbmRleDsKKwlzdHJ1Y3QgZWQgKmVkOworCXN0cnVjdCB0ZCAqbmV4dF9kbF90ZDsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKIAlpbnQgdHJhbnNmZXJfbGVuOwogCV9fdTMyIGRhdGE7CkBAIC0xMjksNyArMTI5LDcgQEAKIAlfX3UxNglmcmFtZV9ubzsJCS8qIGN1cnJlbnQgZnJhbWUgbnVtYmVyICovCiAJX191MTYJcGFkMTsJCQkvKiBzZXQgdG8gMCBvbiBlYWNoIGZyYW1lX25vIGNoYW5nZSAqLwogCV9fdTMyCWRvbmVfaGVhZDsJCS8qIGluZm8gcmV0dXJuZWQgZm9yIGFuIGludGVycnVwdCAqLwotCXU4CQlyZXNlcnZlZF9mb3JfaGNbMTE2XTsKKwl1OAlyZXNlcnZlZF9mb3JfaGNbMTE2XTsKIH0gX19hdHRyaWJ1dGUoKGFsaWduZWQoMjU2KSkpOwogCiAKQEAgLTE0MCw3ICsxNDAsNyBAQAogCiAvKgogICogVGhpcyBpcyB0aGUgc3RydWN0dXJlIG9mIHRoZSBPSENJIGNvbnRyb2xsZXIncyBtZW1vcnkgbWFwcGVkIEkvTwotICogcmVnaW9uLiAgVGhpcyBpcyBNZW1vcnkgTWFwcGVkIEkvTy4gIFlvdSBtdXN0IHVzZSB0aGUgcmVhZGwoKSBhbmQKKyAqIHJlZ2lvbi4gIFRoaXMgaXMgTWVtb3J5IE1hcHBlZCBJL08uCVlvdSBtdXN0IHVzZSB0aGUgcmVhZGwoKSBhbmQKICAqIHdyaXRlbCgpIG1hY3JvcyBkZWZpbmVkIGluIGFzbS9pby5oIHRvIGFjY2VzcyB0aGVzZSEhCiAgKi8KIHN0cnVjdCBvaGNpX3JlZ3MgewpAQCAtMjAwLDEwICsyMDAsMTAgQEAKICAqIEhjQ29tbWFuZFN0YXR1cyAoY21kc3RhdHVzKSByZWdpc3RlciBtYXNrcwogICovCiAjZGVmaW5lIE9IQ0lfSENSCSgxIDw8IDApCS8qIGhvc3QgY29udHJvbGxlciByZXNldCAqLwotI2RlZmluZSBPSENJX0NMRiAgCSgxIDw8IDEpCS8qIGNvbnRyb2wgbGlzdCBmaWxsZWQgKi8KLSNkZWZpbmUgT0hDSV9CTEYgIAkoMSA8PCAyKQkvKiBidWxrIGxpc3QgZmlsbGVkICovCi0jZGVmaW5lIE9IQ0lfT0NSICAJKDEgPDwgMykJLyogb3duZXJzaGlwIGNoYW5nZSByZXF1ZXN0ICovCi0jZGVmaW5lIE9IQ0lfU09DICAJKDMgPDwgMTYpCS8qIHNjaGVkdWxpbmcgb3ZlcnJ1biBjb3VudCAqLworI2RlZmluZSBPSENJX0NMRgkoMSA8PCAxKQkvKiBjb250cm9sIGxpc3QgZmlsbGVkICovCisjZGVmaW5lIE9IQ0lfQkxGCSgxIDw8IDIpCS8qIGJ1bGsgbGlzdCBmaWxsZWQgKi8KKyNkZWZpbmUgT0hDSV9PQ1IJKDEgPDwgMykJLyogb3duZXJzaGlwIGNoYW5nZSByZXF1ZXN0ICovCisjZGVmaW5lIE9IQ0lfU09DCSgzIDw8IDE2KQkvKiBzY2hlZHVsaW5nIG92ZXJydW4gY291bnQgKi8KIAogLyoKICAqIG1hc2tzIHVzZWQgd2l0aCBpbnRlcnJ1cHQgcmVnaXN0ZXJzOgpAQCAtMjM0LDkzICsyMzQsOTMgQEAKIC8qIFVTQiBIVUIgQ09OU1RBTlRTIChub3QgT0hDSS1zcGVjaWZpYzsgc2VlIGh1Yi5oKSAqLwogCiAvKiBkZXN0aW5hdGlvbiBvZiByZXF1ZXN0ICovCi0jZGVmaW5lIFJIX0lOVEVSRkFDRSAgICAgICAgICAgICAgIDB4MDEKLSNkZWZpbmUgUkhfRU5EUE9JTlQgICAgICAgICAgICAgICAgMHgwMgotI2RlZmluZSBSSF9PVEhFUiAgICAgICAgICAgICAgICAgICAweDAzCisjZGVmaW5lIFJIX0lOVEVSRkFDRQkJMHgwMQorI2RlZmluZSBSSF9FTkRQT0lOVAkJMHgwMgorI2RlZmluZSBSSF9PVEhFUgkJMHgwMwogCi0jZGVmaW5lIFJIX0NMQVNTICAgICAgICAgICAgICAgICAgIDB4MjAKLSNkZWZpbmUgUkhfVkVORE9SICAgICAgICAgICAgICAgICAgMHg0MAorI2RlZmluZSBSSF9DTEFTUwkJMHgyMAorI2RlZmluZSBSSF9WRU5ET1IJCTB4NDAKIAogLyogUmVxdWVzdHM6IGJSZXF1ZXN0IDw8IDggfCBibVJlcXVlc3RUeXBlICovCi0jZGVmaW5lIFJIX0dFVF9TVEFUVVMgICAgICAgICAgIDB4MDA4MAotI2RlZmluZSBSSF9DTEVBUl9GRUFUVVJFICAgICAgICAweDAxMDAKLSNkZWZpbmUgUkhfU0VUX0ZFQVRVUkUgICAgICAgICAgMHgwMzAwCisjZGVmaW5lIFJIX0dFVF9TVEFUVVMJCTB4MDA4MAorI2RlZmluZSBSSF9DTEVBUl9GRUFUVVJFCTB4MDEwMAorI2RlZmluZSBSSF9TRVRfRkVBVFVSRQkJMHgwMzAwCiAjZGVmaW5lIFJIX1NFVF9BRERSRVNTCQkweDA1MDAKICNkZWZpbmUgUkhfR0VUX0RFU0NSSVBUT1IJMHgwNjgwCi0jZGVmaW5lIFJIX1NFVF9ERVNDUklQVE9SICAgICAgIDB4MDcwMAorI2RlZmluZSBSSF9TRVRfREVTQ1JJUFRPUgkweDA3MDAKICNkZWZpbmUgUkhfR0VUX0NPTkZJR1VSQVRJT04JMHgwODgwCiAjZGVmaW5lIFJIX1NFVF9DT05GSUdVUkFUSU9OCTB4MDkwMAotI2RlZmluZSBSSF9HRVRfU1RBVEUgICAgICAgICAgICAweDAyODAKLSNkZWZpbmUgUkhfR0VUX0lOVEVSRkFDRSAgICAgICAgMHgwQTgwCi0jZGVmaW5lIFJIX1NFVF9JTlRFUkZBQ0UgICAgICAgIDB4MEIwMAotI2RlZmluZSBSSF9TWU5DX0ZSQU1FICAgICAgICAgICAweDBDODAKKyNkZWZpbmUgUkhfR0VUX1NUQVRFCQkweDAyODAKKyNkZWZpbmUgUkhfR0VUX0lOVEVSRkFDRQkweDBBODAKKyNkZWZpbmUgUkhfU0VUX0lOVEVSRkFDRQkweDBCMDAKKyNkZWZpbmUgUkhfU1lOQ19GUkFNRQkJMHgwQzgwCiAvKiBPdXIgVmVuZG9yIFNwZWNpZmljIFJlcXVlc3QgKi8KLSNkZWZpbmUgUkhfU0VUX0VQICAgICAgICAgICAgICAgMHgyMDAwCisjZGVmaW5lIFJIX1NFVF9FUAkJMHgyMDAwCiAKIAogLyogSHViIHBvcnQgZmVhdHVyZXMgKi8KLSNkZWZpbmUgUkhfUE9SVF9DT05ORUNUSU9OICAgICAgICAgMHgwMAotI2RlZmluZSBSSF9QT1JUX0VOQUJMRSAgICAgICAgICAgICAweDAxCi0jZGVmaW5lIFJIX1BPUlRfU1VTUEVORCAgICAgICAgICAgIDB4MDIKLSNkZWZpbmUgUkhfUE9SVF9PVkVSX0NVUlJFTlQgICAgICAgMHgwMwotI2RlZmluZSBSSF9QT1JUX1JFU0VUICAgICAgICAgICAgICAweDA0Ci0jZGVmaW5lIFJIX1BPUlRfUE9XRVIgICAgICAgICAgICAgIDB4MDgKLSNkZWZpbmUgUkhfUE9SVF9MT1dfU1BFRUQgICAgICAgICAgMHgwOQorI2RlZmluZSBSSF9QT1JUX0NPTk5FQ1RJT04JMHgwMAorI2RlZmluZSBSSF9QT1JUX0VOQUJMRQkJMHgwMQorI2RlZmluZSBSSF9QT1JUX1NVU1BFTkQJCTB4MDIKKyNkZWZpbmUgUkhfUE9SVF9PVkVSX0NVUlJFTlQJMHgwMworI2RlZmluZSBSSF9QT1JUX1JFU0VUCQkweDA0CisjZGVmaW5lIFJIX1BPUlRfUE9XRVIJCTB4MDgKKyNkZWZpbmUgUkhfUE9SVF9MT1dfU1BFRUQJMHgwOQogCi0jZGVmaW5lIFJIX0NfUE9SVF9DT05ORUNUSU9OICAgICAgIDB4MTAKLSNkZWZpbmUgUkhfQ19QT1JUX0VOQUJMRSAgICAgICAgICAgMHgxMQotI2RlZmluZSBSSF9DX1BPUlRfU1VTUEVORCAgICAgICAgICAweDEyCi0jZGVmaW5lIFJIX0NfUE9SVF9PVkVSX0NVUlJFTlQgICAgIDB4MTMKLSNkZWZpbmUgUkhfQ19QT1JUX1JFU0VUICAgICAgICAgICAgMHgxNAorI2RlZmluZSBSSF9DX1BPUlRfQ09OTkVDVElPTgkweDEwCisjZGVmaW5lIFJIX0NfUE9SVF9FTkFCTEUJMHgxMQorI2RlZmluZSBSSF9DX1BPUlRfU1VTUEVORAkweDEyCisjZGVmaW5lIFJIX0NfUE9SVF9PVkVSX0NVUlJFTlQJMHgxMworI2RlZmluZSBSSF9DX1BPUlRfUkVTRVQJCTB4MTQKIAogLyogSHViIGZlYXR1cmVzICovCi0jZGVmaW5lIFJIX0NfSFVCX0xPQ0FMX1BPV0VSICAgICAgIDB4MDAKLSNkZWZpbmUgUkhfQ19IVUJfT1ZFUl9DVVJSRU5UICAgICAgMHgwMQorI2RlZmluZSBSSF9DX0hVQl9MT0NBTF9QT1dFUgkweDAwCisjZGVmaW5lIFJIX0NfSFVCX09WRVJfQ1VSUkVOVAkweDAxCiAKLSNkZWZpbmUgUkhfREVWSUNFX1JFTU9URV9XQUtFVVAgICAgMHgwMAotI2RlZmluZSBSSF9FTkRQT0lOVF9TVEFMTCAgICAgICAgICAweDAxCisjZGVmaW5lIFJIX0RFVklDRV9SRU1PVEVfV0FLRVVQIDB4MDAKKyNkZWZpbmUgUkhfRU5EUE9JTlRfU1RBTEwJMHgwMQogCi0jZGVmaW5lIFJIX0FDSyAgICAgICAgICAgICAgICAgICAgIDB4MDEKLSNkZWZpbmUgUkhfUkVRX0VSUiAgICAgICAgICAgICAgICAgLTEKLSNkZWZpbmUgUkhfTkFDSyAgICAgICAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBSSF9BQ0sJCQkweDAxCisjZGVmaW5lIFJIX1JFUV9FUlIJCS0xCisjZGVmaW5lIFJIX05BQ0sJCQkweDAwCiAKIAogLyogT0hDSSBST09UIEhVQiBSRUdJU1RFUiBNQVNLUyAqLwogCiAvKiByb290aHViLnBvcnRzdGF0dXMgW2ldIGJpdHMgKi8KLSNkZWZpbmUgUkhfUFNfQ0NTICAgICAgICAgICAgMHgwMDAwMDAwMSAgIAkvKiBjdXJyZW50IGNvbm5lY3Qgc3RhdHVzICovCi0jZGVmaW5lIFJIX1BTX1BFUyAgICAgICAgICAgIDB4MDAwMDAwMDIgICAJLyogcG9ydCBlbmFibGUgc3RhdHVzKi8KLSNkZWZpbmUgUkhfUFNfUFNTICAgICAgICAgICAgMHgwMDAwMDAwNCAgIAkvKiBwb3J0IHN1c3BlbmQgc3RhdHVzICovCi0jZGVmaW5lIFJIX1BTX1BPQ0kgICAgICAgICAgIDB4MDAwMDAwMDggICAJLyogcG9ydCBvdmVyIGN1cnJlbnQgaW5kaWNhdG9yICovCi0jZGVmaW5lIFJIX1BTX1BSUyAgICAgICAgICAgIDB4MDAwMDAwMTAgIAkvKiBwb3J0IHJlc2V0IHN0YXR1cyAqLwotI2RlZmluZSBSSF9QU19QUFMgICAgICAgICAgICAweDAwMDAwMTAwICAgCS8qIHBvcnQgcG93ZXIgc3RhdHVzICovCi0jZGVmaW5lIFJIX1BTX0xTREEgICAgICAgICAgIDB4MDAwMDAyMDAgICAgCS8qIGxvdyBzcGVlZCBkZXZpY2UgYXR0YWNoZWQgKi8KLSNkZWZpbmUgUkhfUFNfQ1NDICAgICAgICAgICAgMHgwMDAxMDAwMCAJLyogY29ubmVjdCBzdGF0dXMgY2hhbmdlICovCi0jZGVmaW5lIFJIX1BTX1BFU0MgICAgICAgICAgIDB4MDAwMjAwMDAgICAJLyogcG9ydCBlbmFibGUgc3RhdHVzIGNoYW5nZSAqLwotI2RlZmluZSBSSF9QU19QU1NDICAgICAgICAgICAweDAwMDQwMDAwICAgIAkvKiBwb3J0IHN1c3BlbmQgc3RhdHVzIGNoYW5nZSAqLwotI2RlZmluZSBSSF9QU19PQ0lDICAgICAgICAgICAweDAwMDgwMDAwICAgIAkvKiBvdmVyIGN1cnJlbnQgaW5kaWNhdG9yIGNoYW5nZSAqLwotI2RlZmluZSBSSF9QU19QUlNDICAgICAgICAgICAweDAwMTAwMDAwICAgCS8qIHBvcnQgcmVzZXQgc3RhdHVzIGNoYW5nZSAqLworI2RlZmluZSBSSF9QU19DQ1MJCTB4MDAwMDAwMDEJLyogY3VycmVudCBjb25uZWN0IHN0YXR1cyAqLworI2RlZmluZSBSSF9QU19QRVMJCTB4MDAwMDAwMDIJLyogcG9ydCBlbmFibGUgc3RhdHVzKi8KKyNkZWZpbmUgUkhfUFNfUFNTCQkweDAwMDAwMDA0CS8qIHBvcnQgc3VzcGVuZCBzdGF0dXMgKi8KKyNkZWZpbmUgUkhfUFNfUE9DSQkJMHgwMDAwMDAwOAkvKiBwb3J0IG92ZXIgY3VycmVudCBpbmRpY2F0b3IgKi8KKyNkZWZpbmUgUkhfUFNfUFJTCQkweDAwMDAwMDEwCS8qIHBvcnQgcmVzZXQgc3RhdHVzICovCisjZGVmaW5lIFJIX1BTX1BQUwkJMHgwMDAwMDEwMAkvKiBwb3J0IHBvd2VyIHN0YXR1cyAqLworI2RlZmluZSBSSF9QU19MU0RBCQkweDAwMDAwMjAwCS8qIGxvdyBzcGVlZCBkZXZpY2UgYXR0YWNoZWQgKi8KKyNkZWZpbmUgUkhfUFNfQ1NDCQkweDAwMDEwMDAwCS8qIGNvbm5lY3Qgc3RhdHVzIGNoYW5nZSAqLworI2RlZmluZSBSSF9QU19QRVNDCQkweDAwMDIwMDAwCS8qIHBvcnQgZW5hYmxlIHN0YXR1cyBjaGFuZ2UgKi8KKyNkZWZpbmUgUkhfUFNfUFNTQwkJMHgwMDA0MDAwMAkvKiBwb3J0IHN1c3BlbmQgc3RhdHVzIGNoYW5nZSAqLworI2RlZmluZSBSSF9QU19PQ0lDCQkweDAwMDgwMDAwCS8qIG92ZXIgY3VycmVudCBpbmRpY2F0b3IgY2hhbmdlICovCisjZGVmaW5lIFJIX1BTX1BSU0MJCTB4MDAxMDAwMDAJLyogcG9ydCByZXNldCBzdGF0dXMgY2hhbmdlICovCiAKIC8qIHJvb3RodWIuc3RhdHVzIGJpdHMgKi8KLSNkZWZpbmUgUkhfSFNfTFBTCSAgICAgMHgwMDAwMDAwMQkJLyogbG9jYWwgcG93ZXIgc3RhdHVzICovCi0jZGVmaW5lIFJIX0hTX09DSQkgICAgIDB4MDAwMDAwMDIJCS8qIG92ZXIgY3VycmVudCBpbmRpY2F0b3IgKi8KLSNkZWZpbmUgUkhfSFNfRFJXRQkgICAgIDB4MDAwMDgwMDAJCS8qIGRldmljZSByZW1vdGUgd2FrZXVwIGVuYWJsZSAqLwotI2RlZmluZSBSSF9IU19MUFNDCSAgICAgMHgwMDAxMDAwMAkJLyogbG9jYWwgcG93ZXIgc3RhdHVzIGNoYW5nZSAqLwotI2RlZmluZSBSSF9IU19PQ0lDCSAgICAgMHgwMDAyMDAwMAkJLyogb3ZlciBjdXJyZW50IGluZGljYXRvciBjaGFuZ2UgKi8KLSNkZWZpbmUgUkhfSFNfQ1JXRQkgICAgIDB4ODAwMDAwMDAJCS8qIGNsZWFyIHJlbW90ZSB3YWtldXAgZW5hYmxlICovCisjZGVmaW5lIFJIX0hTX0xQUwkJMHgwMDAwMDAwMQkvKiBsb2NhbCBwb3dlciBzdGF0dXMgKi8KKyNkZWZpbmUgUkhfSFNfT0NJCQkweDAwMDAwMDAyCS8qIG92ZXIgY3VycmVudCBpbmRpY2F0b3IgKi8KKyNkZWZpbmUgUkhfSFNfRFJXRQkJMHgwMDAwODAwMAkvKiBkZXZpY2UgcmVtb3RlIHdha2V1cCBlbmFibGUgKi8KKyNkZWZpbmUgUkhfSFNfTFBTQwkJMHgwMDAxMDAwMAkvKiBsb2NhbCBwb3dlciBzdGF0dXMgY2hhbmdlICovCisjZGVmaW5lIFJIX0hTX09DSUMJCTB4MDAwMjAwMDAJLyogb3ZlciBjdXJyZW50IGluZGljYXRvciBjaGFuZ2UgKi8KKyNkZWZpbmUgUkhfSFNfQ1JXRQkJMHg4MDAwMDAwMAkvKiBjbGVhciByZW1vdGUgd2FrZXVwIGVuYWJsZSAqLwogCiAvKiByb290aHViLmIgbWFza3MgKi8KLSNkZWZpbmUgUkhfQl9EUgkJMHgwMDAwZmZmZgkJLyogZGV2aWNlIHJlbW92YWJsZSBmbGFncyAqLwotI2RlZmluZSBSSF9CX1BQQ00JMHhmZmZmMDAwMAkJLyogcG9ydCBwb3dlciBjb250cm9sIG1hc2sgKi8KKyNkZWZpbmUgUkhfQl9EUgkJCTB4MDAwMGZmZmYJLyogZGV2aWNlIHJlbW92YWJsZSBmbGFncyAqLworI2RlZmluZSBSSF9CX1BQQ00JCTB4ZmZmZjAwMDAJLyogcG9ydCBwb3dlciBjb250cm9sIG1hc2sgKi8KIAogLyogcm9vdGh1Yi5hIG1hc2tzICovCi0jZGVmaW5lCVJIX0FfTkRQCSgweGZmIDw8IDApCQkvKiBudW1iZXIgb2YgZG93bnN0cmVhbSBwb3J0cyAqLwotI2RlZmluZQlSSF9BX1BTTQkoMSA8PCA4KQkJLyogcG93ZXIgc3dpdGNoaW5nIG1vZGUgKi8KLSNkZWZpbmUJUkhfQV9OUFMJKDEgPDwgOSkJCS8qIG5vIHBvd2VyIHN3aXRjaGluZyAqLwotI2RlZmluZQlSSF9BX0RUCQkoMSA8PCAxMCkJCS8qIGRldmljZSB0eXBlIChtYnopICovCi0jZGVmaW5lCVJIX0FfT0NQTQkoMSA8PCAxMSkJCS8qIG92ZXIgY3VycmVudCBwcm90ZWN0aW9uIG1vZGUgKi8KLSNkZWZpbmUJUkhfQV9OT0NQCSgxIDw8IDEyKQkJLyogbm8gb3ZlciBjdXJyZW50IHByb3RlY3Rpb24gKi8KLSNkZWZpbmUJUkhfQV9QT1RQR1QJKDB4ZmYgPDwgMjQpCQkvKiBwb3dlciBvbiB0byBwb3dlciBnb29kIHRpbWUgKi8KKyNkZWZpbmUJUkhfQV9ORFAJCSgweGZmIDw8IDApCS8qIG51bWJlciBvZiBkb3duc3RyZWFtIHBvcnRzICovCisjZGVmaW5lCVJIX0FfUFNNCQkoMSA8PCA4KQkvKiBwb3dlciBzd2l0Y2hpbmcgbW9kZSAqLworI2RlZmluZQlSSF9BX05QUwkJKDEgPDwgOSkJLyogbm8gcG93ZXIgc3dpdGNoaW5nICovCisjZGVmaW5lCVJIX0FfRFQJCQkoMSA8PCAxMCkJLyogZGV2aWNlIHR5cGUgKG1ieikgKi8KKyNkZWZpbmUJUkhfQV9PQ1BNCQkoMSA8PCAxMSkJLyogb3ZlciBjdXJyZW50IHByb3RlY3Rpb24gbW9kZSAqLworI2RlZmluZQlSSF9BX05PQ1AJCSgxIDw8IDEyKQkvKiBubyBvdmVyIGN1cnJlbnQgcHJvdGVjdGlvbiAqLworI2RlZmluZQlSSF9BX1BPVFBHVAkJKDB4ZmYgPDwgMjQpCS8qIHBvd2VyIG9uIHRvIHBvd2VyIGdvb2QgdGltZSAqLwogCiAvKiB1cmIgKi8KICNkZWZpbmUgTl9VUkJfVEQgNDgKQEAgLTM0NSwzOSArMzQ1LDM5IEBACiAKIAogdHlwZWRlZiBzdHJ1Y3Qgb2hjaSB7Ci0Jc3RydWN0IG9oY2lfaGNjYSAqaGNjYTsJCS8qIGhjY2EgKi8KLQkvKmRtYV9hZGRyX3QgaGNjYV9kbWE7Ki8KKwlzdHJ1Y3Qgb2hjaV9oY2NhICpoY2NhOwkvKiBoY2NhICovCisJLypkbWFfYWRkcl90IGhjY2FfZG1hOyAqLwogCiAJaW50IGlycTsKLQlpbnQgZGlzYWJsZWQ7CQkJLyogZS5nLiBnb3QgYSBVRSwgd2UncmUgaHVuZyAqLworCWludCBkaXNhYmxlZDsJCS8qIGUuZy4gZ290IGEgVUUsIHdlJ3JlIGh1bmcgKi8KIAlpbnQgc2xlZXBpbmc7Ci0JdW5zaWduZWQgbG9uZyBmbGFnczsJCS8qIGZvciBIQyBidWdzICovCisJdW5zaWduZWQgbG9uZyBmbGFnczsJLyogZm9yIEhDIGJ1Z3MgKi8KIAogCXN0cnVjdCBvaGNpX3JlZ3MgKnJlZ3M7CS8qIE9IQ0kgY29udHJvbGxlcidzIG1lbW9yeSAqLwogCi0JZWRfdCAqZWRfcm1fbGlzdFsyXTsgICAgIC8qIGxpc3RzIG9mIGFsbCBlbmRwb2ludHMgdG8gYmUgcmVtb3ZlZCAqLwotCWVkX3QgKmVkX2J1bGt0YWlsOyAgICAgICAvKiBsYXN0IGVuZHBvaW50IG9mIGJ1bGsgbGlzdCAqLwotCWVkX3QgKmVkX2NvbnRyb2x0YWlsOyAgICAvKiBsYXN0IGVuZHBvaW50IG9mIGNvbnRyb2wgbGlzdCAqLworCWVkX3QgKmVkX3JtX2xpc3RbMl07CS8qIGxpc3RzIG9mIGFsbCBlbmRwb2ludHMgdG8gYmUgcmVtb3ZlZCAqLworCWVkX3QgKmVkX2J1bGt0YWlsOwkvKiBsYXN0IGVuZHBvaW50IG9mIGJ1bGsgbGlzdCAqLworCWVkX3QgKmVkX2NvbnRyb2x0YWlsOwkvKiBsYXN0IGVuZHBvaW50IG9mIGNvbnRyb2wgbGlzdCAqLwogCWludCBpbnRyc3RhdHVzOwotCV9fdTMyIGhjX2NvbnRyb2w7CQkvKiBjb3B5IG9mIHRoZSBoYyBjb250cm9sIHJlZyAqLworCV9fdTMyIGhjX2NvbnRyb2w7CS8qIGNvcHkgb2YgdGhlIGhjIGNvbnRyb2wgcmVnICovCiAJc3RydWN0IHVzYl9kZXZpY2UgKmRldlszMl07CiAJc3RydWN0IHZpcnRfcm9vdF9odWIgcmg7CiAKLQljb25zdCBjaGFyCSpzbG90X25hbWU7CisJY29uc3QgY2hhciAqc2xvdF9uYW1lOwogfSBvaGNpX3Q7CiAKICNkZWZpbmUgTlVNX0VEUyA4CQkvKiBudW0gb2YgcHJlYWxsb2NhdGVkIGVuZHBvaW50IGRlc2NyaXB0b3JzICovCiAKIHN0cnVjdCBvaGNpX2RldmljZSB7Ci0JZWRfdCAJZWRbTlVNX0VEU107CisJZWRfdCBlZFtOVU1fRURTXTsKIAlpbnQgZWRfY250OwogfTsKIAogLyogaGNkICovCiAvKiBlbmRwb2ludCAqLwotc3RhdGljIGludCBlcF9saW5rKG9oY2lfdCAqIG9oY2ksIGVkX3QgKiBlZCk7Ci1zdGF0aWMgaW50IGVwX3VubGluayhvaGNpX3QgKiBvaGNpLCBlZF90ICogZWQpOwotc3RhdGljIGVkX3QgKiBlcF9hZGRfZWQoc3RydWN0IHVzYl9kZXZpY2UgKiB1c2JfZGV2LCB1bnNpZ25lZCBsb25nIHBpcGUpOworc3RhdGljIGludCBlcF9saW5rIChvaGNpX3QgKiBvaGNpLCBlZF90ICogZWQpOworc3RhdGljIGludCBlcF91bmxpbmsgKG9oY2lfdCAqIG9oY2ksIGVkX3QgKiBlZCk7CitzdGF0aWMgZWRfdCAqZXBfYWRkX2VkIChzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldiwgdW5zaWduZWQgbG9uZyBwaXBlKTsKIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIApAQCAtMzg1LDIyICszODUsMjAgQEAKICNkZWZpbmUgTlVNX1REIDY0CiAKIC8qICsxIHNvIHdlIGNhbiBhbGlnbiB0aGUgc3RvcmFnZSAqLwotdGRfdCBndGRbTlVNX1REKzFdOwordGRfdCBndGRbTlVNX1REICsgMV07CisKIC8qIHBvaW50ZXJzIHRvIGFsaWduZWQgc3RvcmFnZSAqLwogdGRfdCAqcHRkOwogCiAvKiBURHMgLi4uICovCi1zdGF0aWMgaW5saW5lIHN0cnVjdCB0ZCAqCi10ZF9hbGxvYyAoc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9kZXYpCitzdGF0aWMgaW5saW5lIHN0cnVjdCB0ZCAqdGRfYWxsb2MgKHN0cnVjdCB1c2JfZGV2aWNlICp1c2JfZGV2KQogewogCWludCBpOwotCXN0cnVjdCB0ZAkqdGQ7CisJc3RydWN0IHRkICp0ZDsKIAogCXRkID0gTlVMTDsKLQlmb3IgKGkgPSAwOyBpIDwgTlVNX1REOyBpKyspCi0JewotCQlpZiAocHRkW2ldLnVzYl9kZXYgPT0gTlVMTCkKLQkJeworCWZvciAoaSA9IDA7IGkgPCBOVU1fVEQ7IGkrKykgeworCQlpZiAocHRkW2ldLnVzYl9kZXYgPT0gTlVMTCkgewogCQkJdGQgPSAmcHRkW2ldOwogCQkJdGQtPnVzYl9kZXYgPSB1c2JfZGV2OwogCQkJYnJlYWs7CkBAIC00MTAsOCArNDA4LDcgQEAKIAlyZXR1cm4gdGQ7CiB9CiAKLXN0YXRpYyBpbmxpbmUgdm9pZAotZWRfZnJlZSAoc3RydWN0IGVkICplZCkKK3N0YXRpYyBpbmxpbmUgdm9pZCBlZF9mcmVlIChzdHJ1Y3QgZWQgKmVkKQogewogCWVkLT51c2JfZGV2ID0gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL2NwdS9hcm05MjB0L3N0YXJ0LlMgYi9jcHUvYXJtOTIwdC9zdGFydC5TCmluZGV4IGFjYzAwYWQuLjYyMjMxZjggMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjB0L3N0YXJ0LlMKKysrIGIvY3B1L2FybTkyMHQvc3RhcnQuUwpAQCAtMjEyLDcgKzIxMiw3IEBACiBjbGVhcl9ic3M6CiAJbGRyCXIwLCBfYnNzX3N0YXJ0CQkvKiBmaW5kIHN0YXJ0IG9mIGJzcyBzZWdtZW50ICAgICAgICAqLwogCWxkcglyMSwgX2Jzc19lbmQJCS8qIHN0b3AgaGVyZSAgICAgICAgICAgICAgICAgICAgICAgICovCi0JbW92IAlyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCisJbW92CXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KIAogY2xic3NfbDpzdHIJcjIsIFtyMF0JCS8qIGNsZWFyIGxvb3AuLi4gICAgICAgICAgICAgICAgICAgICovCiAJYWRkCXIwLCByMCwgIzQKQEAgLTM3NywzMSArMzc3LDMxIEBACiB1bmRlZmluZWRfaW5zdHJ1Y3Rpb246CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24KKwlibAlkb191bmRlZmluZWRfaW5zdHJ1Y3Rpb24KIAogCS5hbGlnbgk1CiBzb2Z0d2FyZV9pbnRlcnJ1cHQ6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19zb2Z0d2FyZV9pbnRlcnJ1cHQKKwlibAlkb19zb2Z0d2FyZV9pbnRlcnJ1cHQKIAogCS5hbGlnbgk1CiBwcmVmZXRjaF9hYm9ydDoKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX3ByZWZldGNoX2Fib3J0CisJYmwJZG9fcHJlZmV0Y2hfYWJvcnQKIAogCS5hbGlnbgk1CiBkYXRhX2Fib3J0OgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fZGF0YV9hYm9ydAorCWJsCWRvX2RhdGFfYWJvcnQKIAogCS5hbGlnbgk1CiBub3RfdXNlZDoKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX25vdF91c2VkCisJYmwJZG9fbm90X3VzZWQKIAogI2lmZGVmIENPTkZJR19VU0VfSVJRCiAKQEAgLTQwOSw3ICs0MDksNyBAQAogaXJxOgogCWdldF9pcnFfc3RhY2sKIAlpcnFfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9faXJxCisJYmwJZG9faXJxCiAJaXJxX3Jlc3RvcmVfdXNlcl9yZWdzCiAKIAkuYWxpZ24JNQpAQCAtNDE3LDcgKzQxNyw3IEBACiAJZ2V0X2ZpcV9zdGFjawogCS8qIHNvbWVvbmUgb3VnaHQgdG8gd3JpdGUgYSBtb3JlIGVmZmljdGlvbiBmaXFfc2F2ZV91c2VyX3JlZ3MgKi8KIAlpcnFfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fZmlxCisJYmwJZG9fZmlxCiAJaXJxX3Jlc3RvcmVfdXNlcl9yZWdzCiAKICNlbHNlCkBAIC00MjYsMTIgKzQyNiwxMiBAQAogaXJxOgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9faXJxCisJYmwJZG9faXJxCiAKIAkuYWxpZ24JNQogZmlxOgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fZmlxCisJYmwJZG9fZmlxCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNXQvc3RhcnQuUyBiL2NwdS9hcm05MjV0L3N0YXJ0LlMKaW5kZXggYWNkNzc0Mi4uNWRkZGE1NCAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNXQvc3RhcnQuUworKysgYi9jcHUvYXJtOTI1dC9zdGFydC5TCkBAIC05LDcgKzksNyBAQAogICogIENvcHlyaWdodCAoYykgMjAwMglBbGV4IFr8cGtlIDxhenVAc3lzZ28uZGU+CiAgKiAgQ29weXJpZ2h0IChjKSAyMDAyCUdhcnkgSmVubmVqb2huIDxnakBkZW54LmRlPgogICogIENvcHlyaWdodCAoYykgMjAwMwlSaWNoYXJkIFdvb2RydWZmIDxyLXdvb2RydWZmMkB0aS5jb20+Ci0gKiAgQ29weXJpZ2h0IChjKSAyMDAzCUtzaGl0aWogCSA8a3NoaXRpakB0aS5jb20+CisgKiAgQ29weXJpZ2h0IChjKSAyMDAzCUtzaGl0aWoJIDxrc2hpdGlqQHRpLmNvbT4KICAqCiAgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcwogICogcHJvamVjdC4KQEAgLTIwMCw3ICsyMDAsNyBAQAogY2xlYXJfYnNzOgogCWxkcglyMCwgX2Jzc19zdGFydAkJLyogZmluZCBzdGFydCBvZiBic3Mgc2VnbWVudCAgICAgICAgKi8KIAlsZHIJcjEsIF9ic3NfZW5kCQkvKiBzdG9wIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAqLwotCW1vdiAJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCW1vdglyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKIGNsYnNzX2w6c3RyCXIyLCBbcjBdCQkvKiBjbGVhciBsb29wLi4uICAgICAgICAgICAgICAgICAgICAqLwogCWFkZAlyMCwgcjAsICM0CkBAIC0zNTcsMzEgKzM1NywzMSBAQAogdW5kZWZpbmVkX2luc3RydWN0aW9uOgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fdW5kZWZpbmVkX2luc3RydWN0aW9uCisJYmwJZG9fdW5kZWZpbmVkX2luc3RydWN0aW9uCiAKIAkuYWxpZ24JNQogc29mdHdhcmVfaW50ZXJydXB0OgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fc29mdHdhcmVfaW50ZXJydXB0CisJYmwJZG9fc29mdHdhcmVfaW50ZXJydXB0CiAKIAkuYWxpZ24JNQogcHJlZmV0Y2hfYWJvcnQ6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19wcmVmZXRjaF9hYm9ydAorCWJsCWRvX3ByZWZldGNoX2Fib3J0CiAKIAkuYWxpZ24JNQogZGF0YV9hYm9ydDoKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2RhdGFfYWJvcnQKKwlibAlkb19kYXRhX2Fib3J0CiAKIAkuYWxpZ24JNQogbm90X3VzZWQ6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19ub3RfdXNlZAorCWJsCWRvX25vdF91c2VkCiAKICNpZmRlZiBDT05GSUdfVVNFX0lSUQogCkBAIC0zODksNyArMzg5LDcgQEAKIGlycToKIAlnZXRfaXJxX3N0YWNrCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2lycQorCWJsCWRvX2lycQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAJLmFsaWduCTUKQEAgLTM5Nyw3ICszOTcsNyBAQAogCWdldF9maXFfc3RhY2sKIAkvKiBzb21lb25lIG91Z2h0IHRvIHdyaXRlIGEgbW9yZSBlZmZpY3Rpb24gZmlxX3NhdmVfdXNlcl9yZWdzICovCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2ZpcQorCWJsCWRvX2ZpcQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAjZWxzZQpAQCAtNDA2LDEzICs0MDYsMTMgQEAKIGlycToKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2lycQorCWJsCWRvX2lycQogCiAJLmFsaWduCTUKIGZpcToKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2ZpcQorCWJsCWRvX2ZpcQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2RwODM4NDguYyBiL2NwdS9hcm05MjZlanMvZGF2aW5jaS9kcDgzODQ4LmMKaW5kZXggNTcxOTg0NS4uMmFhOWVmMSAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2RwODM4NDguYworKysgYi9jcHUvYXJtOTI2ZWpzL2RhdmluY2kvZHA4Mzg0OC5jCkBAIC0xMjUsNyArMTI1LDcgQEAKIAkgKiAxMEJhc2VURkQgYW5kIEhELCBJRUVFIDgwMi4zCiAJICovCiAJdG1wID0gRFA4Mzg0OF9OUCB8IERQODM4NDhfVFhfRkRYIHwgRFA4Mzg0OF9UWF9IRFggfAotCSAJRFA4Mzg0OF8xMF9GRFggfCBEUDgzODQ4XzEwX0hEWCB8IERQODM4NDhfQU5fSUVFRV84MDJfMzsKKwkJRFA4Mzg0OF8xMF9GRFggfCBEUDgzODQ4XzEwX0hEWCB8IERQODM4NDhfQU5fSUVFRV84MDJfMzsKIAlkbTY0NHhfZXRoX3BoeV93cml0ZShwaHlfYWRkciwgRFA4Mzg0OF9BTkFfUkVHLCB0bXApOwogCiAKZGlmZiAtLWdpdCBhL2NwdS9hcm05MjZlanMvZGF2aW5jaS9ldGhlci5jIGIvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2V0aGVyLmMKaW5kZXggNzY2YmM3ZC4uZDI4NmVjMCAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2V0aGVyLmMKKysrIGIvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2V0aGVyLmMKQEAgLTQ4OSw3ICs0ODksNyBAQAogCQkJIGRseS0tOwogCQkJIHVkZWxheSgxKTsKIAkJCSBpZiAoZGx5ID09IDApCi0JCQkgCWJyZWFrOworCQkJCWJyZWFrOwogCQl9CiAJCWFkYXBfZW1hYy0+VFgwQ1AgPSBjbnQ7CiAJCWFkYXBfZW1hYy0+VFgwSERQID0gMDsKQEAgLTUwNCw3ICs1MDQsNyBAQAogCQkJIGRseS0tOwogCQkJIHVkZWxheSgxKTsKIAkJCSBpZiAoZGx5ID09IDApCi0JCQkgCWJyZWFrOworCQkJCWJyZWFrOwogCQl9CiAJCWFkYXBfZW1hYy0+UlgwQ1AgPSBjbnQ7CiAJCWFkYXBfZW1hYy0+UlgwSERQID0gMDsKQEAgLTUzNSw4MyArNTM1LDg1IEBACiAgKiBUaGlzIGZ1bmN0aW9uIHNlbmRzIGEgc2luZ2xlIHBhY2tldCBvbiB0aGUgbmV0d29yayBhbmQgcmV0dXJucwogICogcG9zaXRpdmUgbnVtYmVyIChudW1iZXIgb2YgYnl0ZXMgdHJhbnNtaXR0ZWQpIG9yIG5lZ2F0aXZlIGZvciBlcnJvcgogICovCi1zdGF0aWMgaW50IGRtNjQ0eF9ldGhfc2VuZF9wYWNrZXQodm9sYXRpbGUgdm9pZCAqcGFja2V0LCBpbnQgbGVuZ3RoKQorc3RhdGljIGludCBkbTY0NHhfZXRoX3NlbmRfcGFja2V0ICh2b2xhdGlsZSB2b2lkICpwYWNrZXQsIGludCBsZW5ndGgpCiB7CiAJaW50IHJldF9zdGF0dXMgPSAtMTsKKwogCXR4X3NlbmRfbG9vcCA9IDA7CiAKIAkvKiBSZXR1cm4gZXJyb3IgaWYgbm8gbGluayAqLwotCWlmICghcGh5LmdldF9saW5rX3NwZWVkKGFjdGl2ZV9waHlfYWRkcikpCi0JewotCQlwcmludGYoIldBUk46IGVtYWNfc2VuZF9wYWNrZXQ6IE5vIGxpbmtcbiIpOworCWlmICghcGh5LmdldF9saW5rX3NwZWVkIChhY3RpdmVfcGh5X2FkZHIpKSB7CisJCXByaW50ZiAoIldBUk46IGVtYWNfc2VuZF9wYWNrZXQ6IE5vIGxpbmtcbiIpOwogCQlyZXR1cm4gKHJldF9zdGF0dXMpOwogCX0KIAogCS8qIENoZWNrIHBhY2tldCBzaXplIGFuZCBpZiA8IEVNQUNfTUlOX0VUSEVSTkVUX1BLVF9TSVpFLCBwYWQgaXQgdXAgKi8KLQlpZiAobGVuZ3RoIDwgRU1BQ19NSU5fRVRIRVJORVRfUEtUX1NJWkUpCi0JeworCWlmIChsZW5ndGggPCBFTUFDX01JTl9FVEhFUk5FVF9QS1RfU0laRSkgewogCQlsZW5ndGggPSBFTUFDX01JTl9FVEhFUk5FVF9QS1RfU0laRTsKIAl9CiAKIAkvKiBQb3B1bGF0ZSB0aGUgVFggZGVzY3JpcHRvciAqLwotCWVtYWNfdHhfZGVzYy0+bmV4dCAgICAgICAgID0gMDsKLQllbWFjX3R4X2Rlc2MtPmJ1ZmZlciAgICAgICA9ICh1X2ludDhfdCAqKXBhY2tldDsKKwllbWFjX3R4X2Rlc2MtPm5leHQgPSAwOworCWVtYWNfdHhfZGVzYy0+YnVmZmVyID0gKHVfaW50OF90ICopIHBhY2tldDsKIAllbWFjX3R4X2Rlc2MtPmJ1ZmZfb2ZmX2xlbiA9IChsZW5ndGggJiAweGZmZmYpOwogCWVtYWNfdHhfZGVzYy0+cGt0X2ZsYWdfbGVuID0gKChsZW5ndGggJiAweGZmZmYpIHwKLQkJCUVNQUNfQ1BQSV9TT1BfQklUIHwKLQkJCUVNQUNfQ1BQSV9PV05FUlNISVBfQklUIHwKLQkJCUVNQUNfQ1BQSV9FT1BfQklUKTsKKwkJCQkgICAgICBFTUFDX0NQUElfU09QX0JJVCB8CisJCQkJICAgICAgRU1BQ19DUFBJX09XTkVSU0hJUF9CSVQgfAorCQkJCSAgICAgIEVNQUNfQ1BQSV9FT1BfQklUKTsKIAkvKiBTZW5kIHRoZSBwYWNrZXQgKi8KLQlhZGFwX2VtYWMtPlRYMEhEUCA9ICh1bnNpZ25lZCBpbnQpZW1hY190eF9kZXNjOworCWFkYXBfZW1hYy0+VFgwSERQID0gKHVuc2lnbmVkIGludCkgZW1hY190eF9kZXNjOwogCiAJLyogV2FpdCBmb3IgcGFja2V0IHRvIGNvbXBsZXRlIG9yIGxpbmsgZG93biAqLwogCXdoaWxlICgxKSB7Ci0JICAgICAgICBpZiAoIXBoeS5nZXRfbGlua19zcGVlZChhY3RpdmVfcGh5X2FkZHIpKSB7Ci0JICAgICAgICAJZG02NDR4X2V0aF9jaF90ZWFyZG93bihFTUFDX0NIX1RYKTsKLQkgICAgICAgIAlyZXR1cm4gKHJldF9zdGF0dXMpOwotCSAgICAgICAgfQotCSAgICAgICAgaWYgKGFkYXBfZW1hYy0+VFhJTlRTVEFUUkFXICYgMHgwMSkgewotCSAgICAgICAgCXJldF9zdGF0dXMgPSBsZW5ndGg7Ci0JICAgICAgICAJYnJlYWs7CisJCWlmICghcGh5LmdldF9saW5rX3NwZWVkIChhY3RpdmVfcGh5X2FkZHIpKSB7CisJCQlkbTY0NHhfZXRoX2NoX3RlYXJkb3duIChFTUFDX0NIX1RYKTsKKwkJCXJldHVybiAocmV0X3N0YXR1cyk7CiAJCX0KLQkgICAgICAgIHR4X3NlbmRfbG9vcCsrOworCQlpZiAoYWRhcF9lbWFjLT5UWElOVFNUQVRSQVcgJiAweDAxKSB7CisJCQlyZXRfc3RhdHVzID0gbGVuZ3RoOworCQkJYnJlYWs7CisJCX0KKwkJdHhfc2VuZF9sb29wKys7CiAJfQogCi0JcmV0dXJuKHJldF9zdGF0dXMpOworCXJldHVybiAocmV0X3N0YXR1cyk7CiB9CiAKIC8qCiAgKiBUaGlzIGZ1bmN0aW9uIGhhbmRsZXMgcmVjZWlwdCBvZiBhIHBhY2tldCBmcm9tIHRoZSBuZXR3b3JrCiAgKi8KLXN0YXRpYyBpbnQgZG02NDR4X2V0aF9yY3ZfcGFja2V0KHZvaWQpCitzdGF0aWMgaW50IGRtNjQ0eF9ldGhfcmN2X3BhY2tldCAodm9pZCkKIHsKLQl2b2xhdGlsZSBlbWFjX2Rlc2MJKnJ4X2N1cnJfZGVzYzsKLQl2b2xhdGlsZSBlbWFjX2Rlc2MJKmN1cnJfZGVzYzsKLQl2b2xhdGlsZSBlbWFjX2Rlc2MJKnRhaWxfZGVzYzsKLQlpbnQJCQlzdGF0dXMsIHJldCA9IC0xOworCXZvbGF0aWxlIGVtYWNfZGVzYyAqcnhfY3Vycl9kZXNjOworCXZvbGF0aWxlIGVtYWNfZGVzYyAqY3Vycl9kZXNjOworCXZvbGF0aWxlIGVtYWNfZGVzYyAqdGFpbF9kZXNjOworCWludCBzdGF0dXMsIHJldCA9IC0xOwogCiAJcnhfY3Vycl9kZXNjID0gZW1hY19yeF9hY3RpdmVfaGVhZDsKIAlzdGF0dXMgPSByeF9jdXJyX2Rlc2MtPnBrdF9mbGFnX2xlbjsKIAlpZiAoKHJ4X2N1cnJfZGVzYykgJiYgKChzdGF0dXMgJiBFTUFDX0NQUElfT1dORVJTSElQX0JJVCkgPT0gMCkpIHsKLQkgICAgICAgIGlmIChzdGF0dXMgJiBFTUFDX0NQUElfUlhfRVJST1JfRlJBTUUpIHsKLQkgICAgICAgIAkvKiBFcnJvciBpbiBwYWNrZXQgLSBkaXNjYXJkIGl0IGFuZCByZXF1ZXVlIGRlc2MgKi8KLQkgICAgICAgIAlwcmludGYoIldBUk46IGVtYWNfcmN2X3BrdDogRXJyb3IgaW4gcGFja2V0XG4iKTsKKwkJaWYgKHN0YXR1cyAmIEVNQUNfQ1BQSV9SWF9FUlJPUl9GUkFNRSkgeworCQkJLyogRXJyb3IgaW4gcGFja2V0IC0gZGlzY2FyZCBpdCBhbmQgcmVxdWV1ZSBkZXNjICovCisJCQlwcmludGYgKCJXQVJOOiBlbWFjX3Jjdl9wa3Q6IEVycm9yIGluIHBhY2tldFxuIik7CiAJCX0gZWxzZSB7Ci0JCQlOZXRSZWNlaXZlKHJ4X2N1cnJfZGVzYy0+YnVmZmVyLCAocnhfY3Vycl9kZXNjLT5idWZmX29mZl9sZW4gJiAweGZmZmYpKTsKKwkJCU5ldFJlY2VpdmUgKHJ4X2N1cnJfZGVzYy0+YnVmZmVyLAorCQkJCSAgICAocnhfY3Vycl9kZXNjLT5idWZmX29mZl9sZW4gJiAweGZmZmYpKTsKIAkJCXJldCA9IHJ4X2N1cnJfZGVzYy0+YnVmZl9vZmZfbGVuICYgMHhmZmZmOwotCSAgICAgICAgfQorCQl9CiAKLQkgICAgICAgIC8qIEFjayByZWNlaXZlZCBwYWNrZXQgZGVzY3JpcHRvciAqLwotCSAgICAgICAgYWRhcF9lbWFjLT5SWDBDUCA9ICh1bnNpZ25lZCBpbnQpcnhfY3Vycl9kZXNjOwotCSAgICAgICAgY3Vycl9kZXNjID0gcnhfY3Vycl9kZXNjOwotCSAgICAgICAgZW1hY19yeF9hY3RpdmVfaGVhZCA9ICh2b2xhdGlsZSBlbWFjX2Rlc2MgKilyeF9jdXJyX2Rlc2MtPm5leHQ7CisJCS8qIEFjayByZWNlaXZlZCBwYWNrZXQgZGVzY3JpcHRvciAqLworCQlhZGFwX2VtYWMtPlJYMENQID0gKHVuc2lnbmVkIGludCkgcnhfY3Vycl9kZXNjOworCQljdXJyX2Rlc2MgPSByeF9jdXJyX2Rlc2M7CisJCWVtYWNfcnhfYWN0aXZlX2hlYWQgPQorCQkJKHZvbGF0aWxlIGVtYWNfZGVzYyAqKSByeF9jdXJyX2Rlc2MtPm5leHQ7CiAKLQkgICAgICAgIGlmIChzdGF0dXMgJiBFTUFDX0NQUElfRU9RX0JJVCkgewotCSAgICAgICAgCWlmIChlbWFjX3J4X2FjdGl2ZV9oZWFkKSB7Ci0JICAgICAgICAJCWFkYXBfZW1hYy0+UlgwSERQID0gKHVuc2lnbmVkIGludCllbWFjX3J4X2FjdGl2ZV9oZWFkOworCQlpZiAoc3RhdHVzICYgRU1BQ19DUFBJX0VPUV9CSVQpIHsKKwkJCWlmIChlbWFjX3J4X2FjdGl2ZV9oZWFkKSB7CisJCQkJYWRhcF9lbWFjLT5SWDBIRFAgPQorCQkJCQkodW5zaWduZWQgaW50KSBlbWFjX3J4X2FjdGl2ZV9oZWFkOwogCQkJfSBlbHNlIHsKIAkJCQllbWFjX3J4X3F1ZXVlX2FjdGl2ZSA9IDA7Ci0JCQkJcHJpbnRmKCJJTkZPOmVtYWNfcmN2X3BhY2tldDogUlggUXVldWUgbm90IGFjdGl2ZVxuIik7CisJCQkJcHJpbnRmICgiSU5GTzplbWFjX3Jjdl9wYWNrZXQ6IFJYIFF1ZXVlIG5vdCBhY3RpdmVcbiIpOwogCQkJfQogCQl9CiAKQEAgLTYyMSwyOCArNjIzLDI5IEBACiAJCXJ4X2N1cnJfZGVzYy0+bmV4dCA9IDA7CiAKIAkJaWYgKGVtYWNfcnhfYWN0aXZlX2hlYWQgPT0gMCkgewotCQkJcHJpbnRmKCJJTkZPOiBlbWFjX3Jjdl9wa3Q6IGFjdGl2ZSBxdWV1ZSBoZWFkID0gMFxuIik7CisJCQlwcmludGYgKCJJTkZPOiBlbWFjX3Jjdl9wa3Q6IGFjdGl2ZSBxdWV1ZSBoZWFkID0gMFxuIik7CiAJCQllbWFjX3J4X2FjdGl2ZV9oZWFkID0gY3Vycl9kZXNjOwogCQkJZW1hY19yeF9hY3RpdmVfdGFpbCA9IGN1cnJfZGVzYzsKIAkJCWlmIChlbWFjX3J4X3F1ZXVlX2FjdGl2ZSAhPSAwKSB7Ci0JCQkJYWRhcF9lbWFjLT5SWDBIRFAgPSAodW5zaWduZWQgaW50KWVtYWNfcnhfYWN0aXZlX2hlYWQ7Ci0JCQkJcHJpbnRmKCJJTkZPOiBlbWFjX3Jjdl9wa3Q6IGFjdGl2ZSBxdWV1ZSBoZWFkID0gMCwgSERQIGZpcmVkXG4iKTsKKwkJCQlhZGFwX2VtYWMtPlJYMEhEUCA9CisJCQkJCSh1bnNpZ25lZCBpbnQpIGVtYWNfcnhfYWN0aXZlX2hlYWQ7CisJCQkJcHJpbnRmICgiSU5GTzogZW1hY19yY3ZfcGt0OiBhY3RpdmUgcXVldWUgaGVhZCA9IDAsIEhEUCBmaXJlZFxuIik7CiAJCQkJZW1hY19yeF9xdWV1ZV9hY3RpdmUgPSAxOwogCQkJfQogCQl9IGVsc2UgewogCQkJdGFpbF9kZXNjID0gZW1hY19yeF9hY3RpdmVfdGFpbDsKIAkJCWVtYWNfcnhfYWN0aXZlX3RhaWwgPSBjdXJyX2Rlc2M7Ci0JCQl0YWlsX2Rlc2MtPm5leHQgPSAodW5zaWduZWQgaW50KWN1cnJfZGVzYzsKKwkJCXRhaWxfZGVzYy0+bmV4dCA9ICh1bnNpZ25lZCBpbnQpIGN1cnJfZGVzYzsKIAkJCXN0YXR1cyA9IHRhaWxfZGVzYy0+cGt0X2ZsYWdfbGVuOwogCQkJaWYgKHN0YXR1cyAmIEVNQUNfQ1BQSV9FT1FfQklUKSB7Ci0JCQkJYWRhcF9lbWFjLT5SWDBIRFAgPSAodW5zaWduZWQgaW50KWN1cnJfZGVzYzsKKwkJCQlhZGFwX2VtYWMtPlJYMEhEUCA9ICh1bnNpZ25lZCBpbnQpIGN1cnJfZGVzYzsKIAkJCQlzdGF0dXMgJj0gfkVNQUNfQ1BQSV9FT1FfQklUOwogCQkJCXRhaWxfZGVzYy0+cGt0X2ZsYWdfbGVuID0gc3RhdHVzOwogCQkJfQogCQl9Ci0JCXJldHVybihyZXQpOworCQlyZXR1cm4gKHJldCk7CiAJfQotCXJldHVybigwKTsKKwlyZXR1cm4gKDApOwogfQogCiAjZW5kaWYgLyogQ09ORklHX0NNRF9ORVQgKi8KZGlmZiAtLWdpdCBhL2NwdS9hcm05MjZlanMvZGF2aW5jaS9sb3dsZXZlbF9pbml0LlMgYi9jcHUvYXJtOTI2ZWpzL2RhdmluY2kvbG93bGV2ZWxfaW5pdC5TCmluZGV4IGE4N2MxMTIuLjBhNGIyY2YgMTAwNjQ0Ci0tLSBhL2NwdS9hcm05MjZlanMvZGF2aW5jaS9sb3dsZXZlbF9pbml0LlMKKysrIGIvY3B1L2FybTkyNmVqcy9kYXZpbmNpL2xvd2xldmVsX2luaXQuUwpAQCAtMTEwLDcgKzExMCw3IEBACiAJc3RyCXIxMCwgW3I2XQogCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qCi0JICogRERSMiBQTEwgSW5pdGlhbGl6YXRpb24JCQkgICAgCSoKKwkgKiBERFIyIFBMTCBJbml0aWFsaXphdGlvbgkJCQkqCiAJICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwogCiAJLyogU2VsZWN0IHRoZSBDbG9jayBNb2RlIERlcGVuZGluZyBvbiB0aGUgVmFsdWUgd3JpdHRlbiBpbiB0aGUgQm9vdCBUYWJsZSBieSB0aGUgcnVuIHNjcmlwdCAqLwpAQCAtNTQ3LDcgKzU0Nyw3IEBACiAKIAkvKgogCSAqIENhbGwgYm9hcmQtc3BlY2lmaWMgbG93bGV2ZWwgaW5pdC4KLSAJICogVGhhdCBNVVNUIGJlIHByZXNlbnQgYW5kIFRIQVQgcmV0dXJucworCSAqIFRoYXQgTVVTVCBiZSBwcmVzZW50IGFuZCBUSEFUIHJldHVybnMKIAkgKiBiYWNrIHRvIGFyY2ggY2FsbGluZyBjb2RlIHdpdGggIm1vdiBwYywgbHIuIgogCSAqLwogCWIJZHZfYm9hcmRfaW5pdApkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNmVqcy9kYXZpbmNpL25hbmQuYyBiL2NwdS9hcm05MjZlanMvZGF2aW5jaS9uYW5kLmMKaW5kZXggMTI3YmU5Zi4uZmZjNzcwZiAxMDA2NDQKLS0tIGEvY3B1L2FybTkyNmVqcy9kYXZpbmNpL25hbmQuYworKysgYi9jcHUvYXJtOTI2ZWpzL2RhdmluY2kvbmFuZC5jCkBAIC0zMjUsMTcgKzMyNSwxNyBAQAogCSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgogCSAqLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KIAkgYWNmZzEgPSAwCi0JIAl8ICgwIDw8IDMxICkJLyogc2VsZWN0U3Ryb2JlICovCi0JIAl8ICgwIDw8IDMwICkJLyogZXh0V2FpdCAqLwotCSAJfCAoMSA8PCAyNiApCS8qIHdyaXRlU2V0dXAJMTAgbnMgKi8KLQkgCXwgKDMgPDwgMjAgKQkvKiB3cml0ZVN0cm9iZQk0MCBucyAqLwotCSAJfCAoMSA8PCAxNyApCS8qIHdyaXRlSG9sZAkxMCBucyAqLwotCSAJfCAoMSA8PCAxMyApCS8qIHJlYWRTZXR1cAkxMCBucyAqLwotCSAJfCAoNSA8PCA3ICkJLyogcmVhZFN0cm9iZQk2MCBucyAqLwotCSAJfCAoMSA8PCA0ICkJLyogcmVhZEhvbGQJMTAgbnMgKi8KLQkgCXwgKDMgPDwgMiApCS8qIHR1cm5Bcm91bmQJPz8gbnMgKi8KLQkgCXwgKDAgPDwgMCApCS8qIGFzeW5jU2l6ZQk4LWJpdCBidXMgKi8KLQkgCTsKKwkJfCAoMCA8PCAzMSApCS8qIHNlbGVjdFN0cm9iZSAqLworCQl8ICgwIDw8IDMwICkJLyogZXh0V2FpdCAqLworCQl8ICgxIDw8IDI2ICkJLyogd3JpdGVTZXR1cAkxMCBucyAqLworCQl8ICgzIDw8IDIwICkJLyogd3JpdGVTdHJvYmUJNDAgbnMgKi8KKwkJfCAoMSA8PCAxNyApCS8qIHdyaXRlSG9sZAkxMCBucyAqLworCQl8ICgxIDw8IDEzICkJLyogcmVhZFNldHVwCTEwIG5zICovCisJCXwgKDUgPDwgNyApCS8qIHJlYWRTdHJvYmUJNjAgbnMgKi8KKwkJfCAoMSA8PCA0ICkJLyogcmVhZEhvbGQJMTAgbnMgKi8KKwkJfCAoMyA8PCAyICkJLyogdHVybkFyb3VuZAk/PyBucyAqLworCQl8ICgwIDw8IDAgKQkvKiBhc3luY1NpemUJOC1iaXQgYnVzICovCisJCTsKIAogCWVtaWZfcmVncyA9IChlbWlmcmVncylEQVZJTkNJX0FTWU5DX0VNSUZfQ05UUkxfQkFTRTsKIApkaWZmIC0tZ2l0IGEvY3B1L2FybTkyNmVqcy9pbnRlcnJ1cHRzLmMgYi9jcHUvYXJtOTI2ZWpzL2ludGVycnVwdHMuYwppbmRleCAxODE5ZjZiLi43YTQxZjBiIDEwMDY0NAotLS0gYS9jcHUvYXJtOTI2ZWpzL2ludGVycnVwdHMuYworKysgYi9jcHUvYXJtOTI2ZWpzL2ludGVycnVwdHMuYwpAQCAtNDksNyArNDksNyBAQAogewogCWV4dGVybiB2b2lkIHRpbWVyX2luaXQodm9pZCk7CiAKLSAgCXRpbWVyX2luaXQoKTsKKwl0aW1lcl9pbml0KCk7CiAKIAlyZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL2NwdS9hcm05MjZlanMvc3RhcnQuUyBiL2NwdS9hcm05MjZlanMvc3RhcnQuUwppbmRleCAyOTdlZmUwLi5hNjFmYTE4IDEwMDY0NAotLS0gYS9jcHUvYXJtOTI2ZWpzL3N0YXJ0LlMKKysrIGIvY3B1L2FybTkyNmVqcy9zdGFydC5TCkBAIC0xNzUsNyArMTc1LDcgQEAKIGNsZWFyX2JzczoKIAlsZHIJcjAsIF9ic3Nfc3RhcnQJCS8qIGZpbmQgc3RhcnQgb2YgYnNzIHNlZ21lbnQgICAgICAgICovCiAJbGRyCXIxLCBfYnNzX2VuZAkJLyogc3RvcCBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQltb3YgCXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwltb3YJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiBjbGJzc19sOnN0cglyMiwgW3IwXQkJLyogY2xlYXIgbG9vcC4uLiAgICAgICAgICAgICAgICAgICAgKi8KIAlhZGQJcjAsIHIwLCAjNApAQCAtMzcwLDcgKzM3MCw3IEBACiBpcnE6CiAJZ2V0X2lycV9zdGFjawogCWlycV9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19pcnEKKwlibAlkb19pcnEKIAlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKIAogCS5hbGlnbgk1CkBAIC0zNzgsNyArMzc4LDcgQEAKIAlnZXRfZmlxX3N0YWNrCiAJLyogc29tZW9uZSBvdWdodCB0byB3cml0ZSBhIG1vcmUgZWZmaWN0aW9uIGZpcV9zYXZlX3VzZXJfcmVncyAqLwogCWlycV9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19maXEKKwlibAlkb19maXEKIAlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKIAogI2Vsc2UKZGlmZiAtLWdpdCBhL2NwdS9hcm05NDZlcy9zdGFydC5TIGIvY3B1L2FybTk0NmVzL3N0YXJ0LlMKaW5kZXggZThjOTA4Yi4uOWU5N2Y1MyAxMDA2NDQKLS0tIGEvY3B1L2FybTk0NmVzL3N0YXJ0LlMKKysrIGIvY3B1L2FybTk0NmVzL3N0YXJ0LlMKQEAgLTE2Nyw3ICsxNjcsNyBAQAogY2xlYXJfYnNzOgogCWxkcglyMCwgX2Jzc19zdGFydAkJLyogZmluZCBzdGFydCBvZiBic3Mgc2VnbWVudCAgICAgICAgKi8KIAlsZHIJcjEsIF9ic3NfZW5kCQkvKiBzdG9wIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAqLwotCW1vdiAJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCW1vdglyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKIGNsYnNzX2w6c3RyCXIyLCBbcjBdCQkvKiBjbGVhciBsb29wLi4uICAgICAgICAgICAgICAgICAgICAqLwogCWFkZAlyMCwgcjAsICM0CkBAIC0zNTgsNyArMzU4LDcgQEAKIGlycToKIAlnZXRfaXJxX3N0YWNrCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2lycQorCWJsCWRvX2lycQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAJLmFsaWduCTUKQEAgLTM2Niw3ICszNjYsNyBAQAogCWdldF9maXFfc3RhY2sKIAkvKiBzb21lb25lIG91Z2h0IHRvIHdyaXRlIGEgbW9yZSBlZmZpY3Rpb24gZmlxX3NhdmVfdXNlcl9yZWdzICovCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2ZpcQorCWJsCWRvX2ZpcQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAjZWxzZQpkaWZmIC0tZ2l0IGEvY3B1L2FybV9pbnRjbS9zdGFydC5TIGIvY3B1L2FybV9pbnRjbS9zdGFydC5TCmluZGV4IDc1ZmU5MTcuLmQ1Nzc4YTAgMTAwNjQ0Ci0tLSBhL2NwdS9hcm1faW50Y20vc3RhcnQuUworKysgYi9jcHUvYXJtX2ludGNtL3N0YXJ0LlMKQEAgLTE2NSw3ICsxNjUsNyBAQAogY2xlYXJfYnNzOgogCWxkcglyMCwgX2Jzc19zdGFydAkJLyogZmluZCBzdGFydCBvZiBic3Mgc2VnbWVudCAgICAgICAgKi8KIAlsZHIJcjEsIF9ic3NfZW5kCQkvKiBzdG9wIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAqLwotCW1vdiAJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCW1vdglyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKIGNsYnNzX2w6c3RyCXIyLCBbcjBdCQkvKiBjbGVhciBsb29wLi4uICAgICAgICAgICAgICAgICAgICAqLwogCWFkZAlyMCwgcjAsICM0CkBAIC0zMzksNyArMzM5LDcgQEAKIGlycToKIAlnZXRfaXJxX3N0YWNrCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2lycQorCWJsCWRvX2lycQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAJLmFsaWduCTUKQEAgLTM0OCw3ICszNDgsNyBAQAogCWdldF9maXFfc3RhY2sKIAkvKiBzb21lb25lIG91Z2h0IHRvIHdyaXRlIGEgbW9yZSBlZmZpY3Rpb24gZmlxX3NhdmVfdXNlcl9yZWdzICovCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2ZpcQorCWJsCWRvX2ZpcQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAjZWxzZQpkaWZmIC0tZ2l0IGEvY3B1L2JsYWNrZmluL2ZsdXNoLlMgYi9jcHUvYmxhY2tmaW4vZmx1c2guUwppbmRleCA4MDcyYjg2Li40MTdmNzk4IDEwMDY0NAotLS0gYS9jcHUvYmxhY2tmaW4vZmx1c2guUworKysgYi9jcHUvYmxhY2tmaW4vZmx1c2guUwpAQCAtMjIzLDcgKzIyMyw3IEBACiAKIC5hbGlnbiA0OwogcGFnZV9wcmVmaXhfdGFibGU6Ci0uYnl0ZTQgCTB4RkZGRkZDMDA7CS8qIDFLICovCisuYnl0ZTQJMHhGRkZGRkMwMDsJLyogMUsgKi8KIC5ieXRlNAkweEZGRkZGMDAwOwkvKiA0SyAqLwogLmJ5dGU0CTB4RkZGMDAwMDA7CS8qIDFNICovCiAuYnl0ZTQJMHhGRkMwMDAwMDsJLyogNE0gKi8KZGlmZiAtLWdpdCBhL2NwdS9ibGFja2Zpbi9pMmMuYyBiL2NwdS9ibGFja2Zpbi9pMmMuYwppbmRleCA0N2JlMjU4Li42MGYwM2Q0IDEwMDY0NAotLS0gYS9jcHUvYmxhY2tmaW4vaTJjLmMKKysrIGIvY3B1L2JsYWNrZmluL2kyYy5jCkBAIC0zMDIsNyArMzAyLDcgQEAKICAqIGkyY19wcm9iZTogLSBUZXN0IGlmIGEgY2hpcCBhbnN3ZXJzIGZvciBhIGdpdmVuIGkyYyBhZGRyZXNzCiAgKgogICogQGNoaXA6CWFkZHJlc3Mgb2YgdGhlIGNoaXAgd2hpY2ggaXMgc2VhcmNoZWQgZm9yCi0gKiBAcmV0dXJuOiAJMCBpZiBhIGNoaXAgd2FzIGZvdW5kLCAtMSBvdGhlcndoaXNlCisgKiBAcmV0dXJuOgkwIGlmIGEgY2hpcCB3YXMgZm91bmQsIC0xIG90aGVyd2hpc2UKICAqLwogCiBpbnQgaTJjX3Byb2JlKHVjaGFyIGNoaXApCmRpZmYgLS1naXQgYS9jcHUvYmxhY2tmaW4vc2VyaWFsLmMgYi9jcHUvYmxhY2tmaW4vc2VyaWFsLmMKaW5kZXggMGRmZWU1MS4uNDA2ZDlkMCAxMDA2NDQKLS0tIGEvY3B1L2JsYWNrZmluL3NlcmlhbC5jCisrKyBiL2NwdS9ibGFja2Zpbi9zZXJpYWwuYwpAQCAtNCw3ICs0LDcgQEAKICAqIENvcHlyaWdodCAoYykgMjAwNS0yMDA4IEFuYWxvZyBEZXZpY2VzIEluYy4KICAqCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDMJQmFzIFZlcm1ldWxlbiA8YmFzQGJ1eXdheXMubmw+LAotICogCQkJQnV5V2F5cyBCLlYuICh3d3cuYnV5d2F5cy5ubCkKKyAqCQkJQnV5V2F5cyBCLlYuICh3d3cuYnV5d2F5cy5ubCkKICAqCiAgKiBCYXNlZCBoZWF2aWx5IG9uOgogICogYmxrZmluc2VyaWFsLmM6IFNlcmlhbCBkcml2ZXIgZm9yIEJsYWNrRmluIERTUCBpbnRlcm5hbCBVU1JUcy4KZGlmZiAtLWdpdCBhL2NwdS9pMzg2L3NjNTIwLmMgYi9jcHUvaTM4Ni9zYzUyMC5jCmluZGV4IGQwYTczNDEuLjY0MGIyNTUgMTAwNjQ0Ci0tLSBhL2NwdS9pMzg2L3NjNTIwLmMKKysrIGIvY3B1L2kzODYvc2M1MjAuYwpAQCAtNDA2LDcgKzQwNiw3IEBACiB1bG9uZyBnZXRfdGltZXIodWxvbmcgYmFzZSkKIHsKIAkvKiBmaXhtZTogMzAgb3IgMzMgKi8KLQlyZXR1cm4gCXJlYWRfbW1jcl93b3JkKFNDNTIwX0dQVE1SMENOVCkgLyAzMzsKKwlyZXR1cm4JcmVhZF9tbWNyX3dvcmQoU0M1MjBfR1BUTVIwQ05UKSAvIDMzOwogfQogCiB2b2lkIHNldF90aW1lcih1bG9uZyB0KQpkaWZmIC0tZ2l0IGEvY3B1L2kzODYvc2M1MjBfYXNtLlMgYi9jcHUvaTM4Ni9zYzUyMF9hc20uUwppbmRleCA4ZmM3MTNkLi4zNDMyMmVhIDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9zYzUyMF9hc20uUworKysgYi9jcHUvaTM4Ni9zYzUyMF9hc20uUwpAQCAtNTEyLDcgKzUxMiw3IEBACiAJc2hybAkkMiwgJWVheAogCW1vdmwJJWVheCwgJWVieAogCi1iYW5rMjogCW1vdmwJKCVlZGkpLCAlZWF4CitiYW5rMjoJbW92bAkoJWVkaSksICVlYXgKIAltb3ZsCSVlYXgsICVlY3gKIAlhbmRsCSQweDAwODAwMDAwLCAlZWN4CiAJanoJYmFuazEKQEAgLTUyMCw3ICs1MjAsNyBAQAogCXNobGwJJDYsICVlYXgKIAltb3ZsCSVlYXgsICVlYngKIAotYmFuazE6IAltb3ZsCSglZWRpKSwgJWVheAorYmFuazE6CW1vdmwJKCVlZGkpLCAlZWF4CiAJbW92bAklZWF4LCAlZWN4CiAJYW5kbAkkMHgwMDAwODAwMCwgJWVjeAogCWp6CWJhbmswCkBAIC01MjgsNyArNTI4LDcgQEAKIAlzaGxsCSQxNCwgJWVheAogCW1vdmwJJWVheCwgJWVieAogCi1iYW5rMDogCW1vdmwJKCVlZGkpLCAlZWF4CitiYW5rMDoJbW92bAkoJWVkaSksICVlYXgKIAltb3ZsCSVlYXgsICVlY3gKIAlhbmRsCSQweDAwMDAwMDgwLCAlZWN4CiAJanoJZG9uZQpAQCAtNTYzLDcgKzU2Myw3IEBACiAJeG9ybAklZWF4LCAlZWF4CiAJc2hybAkkMiwgJWVjeAogCWNsZAotCXJlcCAJc3Rvc2wKKwlyZXAJc3Rvc2wKIAkJCS8qIGVuYWJsZSByZWFkLCB3cml0ZSBidWZmZXJzICovCiAJbW92YiAgICAkMHgxMSwgJWFsCiAJbW92bCAgICAkREJDVEwsICVlZGkKZGlmZiAtLWdpdCBhL2NwdS9pMzg2L3N0YXJ0LlMgYi9jcHUvaTM4Ni9zdGFydC5TCmluZGV4IDUxYTI3YWEuLjI2NGFjMDkgMTAwNjQ0Ci0tLSBhL2NwdS9pMzg2L3N0YXJ0LlMKKysrIGIvY3B1L2kzODYvc3RhcnQuUwpAQCAtMzQsOCArMzQsOCBAQAogLmdsb2JsIF9pMzg2Ym9vdF9zdGFydAogX2kzODZib290X3N0YXJ0OgogX3N0YXJ0OgotCW1vdmwgICAgJDB4MTgsJWVheCAgICAgICAgIAkvKiBMb2FkIG91ciBzZWdlbWVudCByZWdpc3RlcywgdGhlCi0JCQkJCSAqIGdkdCBoYXZlIGFscmVhZHkgYmVlbiBsb2FkZWQgYnkgc3RhcnQxNi5TICovCisJbW92bCAgICAkMHgxOCwlZWF4CS8qIExvYWQgb3VyIHNlZ2VtZW50IHJlZ2lzdGVzLCB0aGUKKwkJCQkgKiBnZHQgaGF2ZSBhbHJlYWR5IGJlZW4gbG9hZGVkIGJ5IHN0YXJ0MTYuUyAqLwogCW1vdncgICAgJWF4LCVmcwogCW1vdncJJWF4LCVkcwogCW1vdncgICAgJWF4LCVncwpAQCAtNzYsNyArNzYsNyBAQAogCW1vdmwJJC5wcm9ncmVzczBhLCAlZWJwCiAJam1wCXNob3dfYm9vdF9wcm9ncmVzcwogLnByb2dyZXNzMGE6Ci0Jam1wIAlkaWUKKwlqbXAJZGllCiBtZW1fb2s6CiAKIAkvKiBpbmRpY2F0ZSBwcm9ncmVzcyAqLwpAQCAtMTM4LDcgKzEzOCw3IEBACiAJbW92bAkkLnByb2dyZXNzMmEsICVlYnAKIAlqbXAJc2hvd19ib290X3Byb2dyZXNzCiAucHJvZ3Jlc3MyYToKLQlqbXAgCWRpZQorCWptcAlkaWUKIAogZGF0YV9vazoKIApAQCAtMTYyLDcgKzE2Miw3IEBACiAJbW92bAkkMCwgKCVlZGkpCiAJYWRkCSQ0LCAlZWRpCiAJbG9vcAlic3MKLQlqbXAgCWJzc19vaworCWptcAlic3Nfb2sKIAogYnNzX2ZhaWw6CiAJLyogaW5kaWNhdGUgKGxhY2sgb2YpIHByb2dyZXNzICovCkBAIC0xNzAsNyArMTcwLDcgQEAKIAltb3ZsCSQucHJvZ3Jlc3MzYSwgJWVicAogCWptcAlzaG93X2Jvb3RfcHJvZ3Jlc3MKIC5wcm9ncmVzczNhOgotCWptcCAJZGllCisJam1wCWRpZQogCiBic3Nfb2s6CiAKZGlmZiAtLWdpdCBhL2NwdS9pMzg2L3N0YXJ0MTYuUyBiL2NwdS9pMzg2L3N0YXJ0MTYuUwppbmRleCAyMzlmMmZmLi4xZWJiNmJjIDEwMDY0NAotLS0gYS9jcHUvaTM4Ni9zdGFydDE2LlMKKysrIGIvY3B1L2kzODYvc3RhcnQxNi5TCkBAIC0zOSw3NCArMzksNzQgQEAKIGJvYXJkX2luaXQxNl9yZXQ6CiAKIAkvKiBUdXJuIG9mIGNhY2hlICh0aGlzIG1pZ2h0IHJlcXVpcmUgYSA0ODYtY2xhc3MgQ1BVKSAqLwotCW1vdmwgICAgJWNyMCwgJWVheAotCW9ybCAgICAgJDB4NjAwMDAwMDAsJWVheAotCW1vdmwgICAgJWVheCwgJWNyMAorCW1vdmwJJWNyMCwgJWVheAorCW9ybAkkMHg2MDAwMDAwMCwlZWF4CisJbW92bAklZWF4LCAlY3IwCiAJd2JpbnZkCiAKIAkvKiBsb2FkIHRoZSBkZXNjcmlwdG9yIHRhYmxlcyAqLwogbzMyIGNzCWxpZHQJaWR0X3B0cgotbzMyIGNzCWxnZHQgICAgZ2R0X3B0cgorbzMyIGNzCWxnZHQJZ2R0X3B0cgogCiAKIAkvKiBOb3csIHdlIGVudGVyIHByb3RlY3RlZCBtb2RlICovCi0JbW92bCAgICAlY3IwLCAlZWF4Ci0Jb3JsICAgICAkMSwlZWF4Ci0JbW92bCAgICAlZWF4LCAlY3IwCisJbW92bAklY3IwLCAlZWF4CisJb3JsCSQxLCVlYXgKKwltb3ZsCSVlYXgsICVjcjAKIAogCS8qIEZsdXNoIHRoZSBwcmVmZXRjaCBxdWV1ZSAqLwotCWptcCAgICAgZmYKKwlqbXAJZmYKIGZmOgogCiAJLyogRmluYWxseSBqdW1wIHRvIHRoZSAzMmJpdCBpbml0aWFsaXphdGlvbiBjb2RlICovCiAJbW92dwkkY29kZTMyc3RhcnQsICVheAotCW1vdncgICAgJWF4LCVicAorCW1vdncJJWF4LCVicAogbzMyIGNzCWxqbXAJKiglYnApCiAKIAkvKiA0OC1iaXQgZmFyIHBvaW50ZXIgKi8KIGNvZGUzMnN0YXJ0OgotCS5sb25nCV9zdGFydCAgICAgICAgICAgICAgICAgICAgICAgICAgLyogb2Zmc2V0ICovCi0JLndvcmQJMHgxMCAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWdtZW50ICovCisJLmxvbmcJX3N0YXJ0CQkvKiBvZmZzZXQgKi8KKwkud29yZAkweDEwCQkvKiBzZWdtZW50ICovCiAKIGlkdF9wdHI6Ci0JLndvcmQJMAkJCQkvKiBsaW1pdCAqLwotCS5sb25nCTAJCSAgICAgICAJCS8qIGJhc2UgKi8KKwkud29yZAkwCQkvKiBsaW1pdCAqLworCS5sb25nCTAJCS8qIGJhc2UgKi8KIAogZ2R0X3B0cjoKLQkud29yZAkweDMwCQkJICAgICAgICAvKiBsaW1pdCAoNDggYnl0ZXMgPSA2IEdEVCBlbnRyaWVzKSAqLwotCS5sb25nCUJPT1RfU0VHICsgZ2R0CSAgICAgICAgCS8qIGJhc2UgKi8KKwkud29yZAkweDMwCQkvKiBsaW1pdCAoNDggYnl0ZXMgPSA2IEdEVCBlbnRyaWVzKSAqLworCS5sb25nCUJPT1RfU0VHICsgZ2R0CS8qIGJhc2UgKi8KIAogCS8qIFRoZSBHRFQgdGFibGUgLi4uCiAJICoKLQkgKiAgICAgICBTZWxlY3RvcglUeXBlCi0JICogCSAweDAwCQlOVUxMCi0JICogCSAweDA4CQlVbnVzZWQKKwkgKgkgU2VsZWN0b3IJVHlwZQorCSAqCSAweDAwCQlOVUxMCisJICoJIDB4MDgJCVVudXNlZAogCSAqCSAweDEwCQkzMmJpdCBjb2RlCiAJICoJIDB4MTgJCTMyYml0IGRhdGEvc3RhY2sKIAkgKgkgMHgyMAkJMTZiaXQgY29kZQotCSAqCSAweDI4CSAJMTZiaXQgZGF0YS9zdGFjaworCSAqCSAweDI4CQkxNmJpdCBkYXRhL3N0YWNrCiAJICovCiAKIGdkdDoKLQkud29yZAkwLCAwLCAwLCAwCQkJLyogTlVMTCAgKi8KLQkud29yZAkwLCAwLCAwLCAwCQkJLyogdW51c2VkICovCisJLndvcmQJMCwgMCwgMCwgMAkvKiBOVUxMICAqLworCS53b3JkCTAsIDAsIDAsIDAJLyogdW51c2VkICovCiAKLQkud29yZAkweEZGRkYJCQkJLyogNEdiIC0gKDB4MTAwMDAwKjB4MTAwMCA9IDRHYikgKi8KLQkud29yZAkwCQkJCS8qIGJhc2UgYWRkcmVzcyA9IDAgKi8KLQkud29yZAkweDlCMDAJCQkJLyogY29kZSByZWFkL2V4ZWMgKi8KLQkud29yZAkweDAwQ0YJCQkJLyogZ3JhbnVsYXJpdHkgPSA0MDk2LCAzODYgKCs1dGggbmliYmxlIG9mIGxpbWl0KSAqLworCS53b3JkCTB4RkZGRgkJLyogNEdiIC0gKDB4MTAwMDAwKjB4MTAwMCA9IDRHYikgKi8KKwkud29yZAkwCQkvKiBiYXNlIGFkZHJlc3MgPSAwICovCisJLndvcmQJMHg5QjAwCQkvKiBjb2RlIHJlYWQvZXhlYyAqLworCS53b3JkCTB4MDBDRgkJLyogZ3JhbnVsYXJpdHkgPSA0MDk2LCAzODYgKCs1dGggbmliYmxlIG9mIGxpbWl0KSAqLwogCi0JLndvcmQJMHhGRkZGCQkJCS8qIDRHYiAtICgweDEwMDAwMCoweDEwMDAgPSA0R2IpICovCi0JLndvcmQJMHgwCQkJCS8qIGJhc2UgYWRkcmVzcyA9IDAgKi8KLQkud29yZAkweDkzMDAJCQkJLyogZGF0YSByZWFkL3dyaXRlICovCi0JLndvcmQJMHgwMENGCQkJCS8qIGdyYW51bGFyaXR5ID0gNDA5NiwgMzg2ICgrNXRoIG5pYmJsZSBvZiBsaW1pdCkgKi8KKwkud29yZAkweEZGRkYJCS8qIDRHYiAtICgweDEwMDAwMCoweDEwMDAgPSA0R2IpICovCisJLndvcmQJMHgwCQkvKiBiYXNlIGFkZHJlc3MgPSAwICovCisJLndvcmQJMHg5MzAwCQkvKiBkYXRhIHJlYWQvd3JpdGUgKi8KKwkud29yZAkweDAwQ0YJCS8qIGdyYW51bGFyaXR5ID0gNDA5NiwgMzg2ICgrNXRoIG5pYmJsZSBvZiBsaW1pdCkgKi8KIAotCS53b3JkCTB4RkZGRgkJCQkvKiA2NGtiICovCi0JLndvcmQJMAkJCQkvKiBiYXNlIGFkZHJlc3MgPSAwICovCi0JLndvcmQJMHg5YjAwCQkJCS8qIGRhdGEgcmVhZC93cml0ZSAqLwotCS53b3JkCTB4MDAxMAkJCQkvKiBncmFudWxhcml0eSA9IDEgICgrNXRoIG5pYmJsZSBvZiBsaW1pdCkgKi8KKwkud29yZAkweEZGRkYJCS8qIDY0a2IgKi8KKwkud29yZAkwCQkvKiBiYXNlIGFkZHJlc3MgPSAwICovCisJLndvcmQJMHg5YjAwCQkvKiBkYXRhIHJlYWQvd3JpdGUgKi8KKwkud29yZAkweDAwMTAJCS8qIGdyYW51bGFyaXR5ID0gMSAgKCs1dGggbmliYmxlIG9mIGxpbWl0KSAqLwogCi0JLndvcmQJMHhGRkZGCQkJCS8qIDY0a2IgKi8KLQkud29yZAkwCQkJCS8qIGJhc2UgYWRkcmVzcyA9IDAgKi8KLQkud29yZAkweDkzMDAJCQkJLyogZGF0YSByZWFkL3dyaXRlICovCi0JLndvcmQJMHgwMDEwCQkJCS8qIGdyYW51bGFyaXR5ID0gMSAoKzV0aCBuaWJibGUgb2YgbGltaXQpICovCisJLndvcmQJMHhGRkZGCQkvKiA2NGtiICovCisJLndvcmQJMAkJLyogYmFzZSBhZGRyZXNzID0gMCAqLworCS53b3JkCTB4OTMwMAkJLyogZGF0YSByZWFkL3dyaXRlICovCisJLndvcmQJMHgwMDEwCQkvKiBncmFudWxhcml0eSA9IDEgKCs1dGggbmliYmxlIG9mIGxpbWl0KSAqLwpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvSXhFdGhBY2MuYyBiL2NwdS9peHAvbnBlL0l4RXRoQWNjLmMKaW5kZXggZDk4MTY0OS4uMDYxYjI0YiAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvSXhFdGhBY2MuYworKysgYi9jcHUvaXhwL25wZS9JeEV0aEFjYy5jCkBAIC0yMTUsNyArMjE1LDcgQEAKIAogICAgaWYgKCAhIElYX0VUSF9BQ0NfSVNfU0VSVklDRV9JTklUSUFMSVpFRCgpICkKICAgIHsKLSAgIAlyZXR1cm4oSVhfRVRIX0FDQ19GQUlMKTsKKwlyZXR1cm4oSVhfRVRIX0FDQ19GQUlMKTsKICAgIH0KIAogICAgLyoKQEAgLTIzNSw4ICsyMzUsOCBAQAogCiAgICBpZiAoIElYX0VUSF9JU19QT1JUX0lOSVRJQUxJWkVEKHBvcnRJZCkgKQogICAgewotICAgCS8qIEFscmVhZHkgaW5pdGlhbGl6ZWQgKi8KLSAgIAlyZXR1cm4oSVhfRVRIX0FDQ19GQUlMKTsKKwkvKiBBbHJlYWR5IGluaXRpYWxpemVkICovCisJcmV0dXJuKElYX0VUSF9BQ0NfRkFJTCk7CiAgICB9CiAKICAgIGlmKGl4RXRoQWNjTWFjSW5pdChwb3J0SWQpIT1JWF9FVEhfQUNDX1NVQ0NFU1MpCmRpZmYgLS1naXQgYS9jcHUvaXhwL25wZS9JeEV0aEFjY0NvbW1vbi5jIGIvY3B1L2l4cC9ucGUvSXhFdGhBY2NDb21tb24uYwppbmRleCBiZGEyYzQ0Li4yMTEyMDNkIDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9JeEV0aEFjY0NvbW1vbi5jCisrKyBiL2NwdS9peHAvbnBlL0l4RXRoQWNjQ29tbW9uLmMKQEAgLTk2LDcgKzk2LDcgQEAKIElYX0VUSF9BQ0NfUFJJVkFURQogSXhFdGhBY2NRcmVnSW5mbyBpeEV0aEFjY1FtZ3JSeERlZmF1bHRUZW1wbGF0ZSA9CiAgIHsKLSAgICBJWF9FVEhfQUNDX1JYX0ZSQU1FX0VUSF9RLCAJICAgICAvKio8IFF1ZXVlIElEICovCisgICAgSVhfRVRIX0FDQ19SWF9GUkFNRV9FVEhfUSwJICAgICAvKio8IFF1ZXVlIElEICovCiAgICAgIkV0aCBSeCBRIiwKICAgICBpeEV0aFJ4RnJhbWVRTUNhbGxiYWNrLCAgICAgICAgICAvKio8IEZ1bmN0aW9uYWwgY2FsbGJhY2sgKi8KICAgICAoSXhRTWdyQ2FsbGJhY2tJZCkgMCwJICAgICAvKio8IENhbGxiYWNrIHRhZwkgICAgICAqLwpAQCAtMTA0LDcgKzEwNCw3IEBACiAgICAgSVhfUU1HUl9RX0VOVFJZX1NJWkUxLAkgICAgIC8qKjwgUXVldWUgRW50cnkgU2l6ZXMgLSBhbGwgUSBlbnRyaWVzIGFyZSBzaW5nbGUgd29yZCBlbnRyaWVzICAgKi8KICAgICBUUlVFLAkJCSAgICAgLyoqPCBFbmFibGUgUSBub3RpZmljYXRpb24gYXQgc3RhcnR1cCAqLwogICAgIElYX0VUSF9BQ0NfUlhfRlJBTUVfRVRIX1FfU09VUkNFLC8qKjwgUSBDb25kaXRpb24gdG8gZHJpdmUgY2FsbGJhY2sgICAqLwotICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsIAkgICAgIC8qKjwgUSBMb3cgd2F0ZXIgbWFyayAqLworICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsCSAgICAgLyoqPCBRIExvdyB3YXRlciBtYXJrICovCiAgICAgSVhfUU1HUl9RX1dNX0xFVkVMMSwJICAgICAvKio8IFEgSGlnaCB3YXRlciBtYXJrIC0gbmVlZGVkIGJ5IE5QRSAqLwogICB9OwogCkBAIC0xMTYsNyArMTE2LDcgQEAKIElYX0VUSF9BQ0NfUFJJVkFURQogSXhFdGhBY2NRcmVnSW5mbyBpeEV0aEFjY1FtZ3JSeFNtYWxsVGVtcGxhdGUgPQogICB7Ci0gICAgSVhfRVRIX0FDQ19SWF9GUkFNRV9FVEhfUSwgCSAgICAgLyoqPCBRdWV1ZSBJRCAqLworICAgIElYX0VUSF9BQ0NfUlhfRlJBTUVfRVRIX1EsCSAgICAgLyoqPCBRdWV1ZSBJRCAqLwogICAgICJFdGggUnggUSIsCiAgICAgaXhFdGhSeEZyYW1lUU1DYWxsYmFjaywgICAgICAgICAgLyoqPCBGdW5jdGlvbmFsIGNhbGxiYWNrICovCiAgICAgKEl4UU1nckNhbGxiYWNrSWQpIDAsCSAgICAgLyoqPCBDYWxsYmFjayB0YWcJICAgICAgKi8KQEAgLTEyNCw3ICsxMjQsNyBAQAogICAgIElYX1FNR1JfUV9FTlRSWV9TSVpFMSwJICAgICAvKio8IFF1ZXVlIEVudHJ5IFNpemVzIC0gYWxsIFEgZW50cmllcyBhcmUgc2luZ2xlIHdvcmQgZW50cmllcyAgICovCiAgICAgVFJVRSwJCQkgICAgIC8qKjwgRW5hYmxlIFEgbm90aWZpY2F0aW9uIGF0IHN0YXJ0dXAgKi8KICAgICBJWF9FVEhfQUNDX1JYX0ZSQU1FX0VUSF9RX1NPVVJDRSwvKio8IFEgQ29uZGl0aW9uIHRvIGRyaXZlIGNhbGxiYWNrICAgKi8KLSAgICBJWF9RTUdSX1FfV01fTEVWRUwwLCAJICAgICAvKio8IFEgTG93IHdhdGVyIG1hcmsgKi8KKyAgICBJWF9RTUdSX1FfV01fTEVWRUwwLAkgICAgIC8qKjwgUSBMb3cgd2F0ZXIgbWFyayAqLwogICAgIElYX1FNR1JfUV9XTV9MRVZFTDEsCSAgICAgLyoqPCBRIEhpZ2ggd2F0ZXIgbWFyayAtIG5lZWRlZCBieSBOUEUgKi8KICAgfTsKIApAQCAtMTQ2LDcgKzE0Niw3IEBACiAgICAgSVhfUU1HUl9RX0VOVFJZX1NJWkUxLAkgICAgIC8qKjwgUXVldWUgRW50cnkgU2l6ZXMgLSBhbGwgUSBlbnRyaWVzIGFyZSBzaW5nbGUgd29yZCBlbnRyaWVzICAgKi8KICAgICBGQUxTRSwJCQkgICAgIC8qKjwgRGlzYWJsZSBRIG5vdGlmaWNhdGlvbiBhdCBzdGFydHVwICovCiAgICAgSVhfRVRIX0FDQ19SWF9GUkVFX0JVRkZfRU5FVDBfUV9TT1VSQ0UsIC8qKjwgUSBDb25kaXRpb24gdG8gZHJpdmUgY2FsbGJhY2sgICovCi0gICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwgCSAgICAgLyoqKjwgUSBMb3cgd2F0ZXIgbWFyayAqLworICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsCSAgICAgLyoqKjwgUSBMb3cgd2F0ZXIgbWFyayAqLwogICAgIElYX1FNR1JfUV9XTV9MRVZFTDY0LAkgICAgIC8qKjwgUSBIaWdoIHdhdGVyIG1hcmsgKi8KICAgfSwKIApAQCAtMTU5LDcgKzE1OSw3IEBACiAgICAgSVhfUU1HUl9RX0VOVFJZX1NJWkUxLAkgICAgIC8qKjwgUXVldWUgRW50cnkgU2l6ZXMgLSBhbGwgUSBlbnRyaWVzIGFyZSBzaW5nbGUgd29yZCBlbnRyaWVzICAgKi8KICAgICBGQUxTRSwJCQkgICAgIC8qKjwgRGlzYWJsZSBRIG5vdGlmaWNhdGlvbiBhdCBzdGFydHVwICovCiAgICAgSVhfRVRIX0FDQ19SWF9GUkVFX0JVRkZfRU5FVDFfUV9TT1VSQ0UsICAvKio8IFEgQ29uZGl0aW9uIHRvIGRyaXZlIGNhbGxiYWNrICAqLwotICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsIAkgICAgIC8qKjwgUSBMb3cgd2F0ZXIgbWFyayAqLworICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsCSAgICAgLyoqPCBRIExvdyB3YXRlciBtYXJrICovCiAgICAgSVhfUU1HUl9RX1dNX0xFVkVMNjQsCSAgICAgLyoqPCBRIEhpZ2ggd2F0ZXIgbWFyayAqLwogICB9LAogI2lmZGVmIF9faXhwNDZYCkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICBJWF9RTUdSX1FfRU5UUllfU0laRTEsCSAgICAgLyoqPCBRdWV1ZSBFbnRyeSBTaXplcyAtIGFsbCBRIGVudHJpZXMgYXJlIHNpbmdsZSB3b3JkIGVudHJpZXMgICAqLwogICAgIEZBTFNFLAkJCSAgICAgLyoqPCBEaXNhYmxlIFEgbm90aWZpY2F0aW9uIGF0IHN0YXJ0dXAgKi8KICAgICBJWF9FVEhfQUNDX1JYX0ZSRUVfQlVGRl9FTkVUMl9RX1NPVVJDRSwgIC8qKjwgUSBDb25kaXRpb24gdG8gZHJpdmUgY2FsbGJhY2sgICovCi0gICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwgCSAgICAgLyoqPCBRIExvdyB3YXRlciBtYXJrICovCisgICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwJICAgICAvKio8IFEgTG93IHdhdGVyIG1hcmsgKi8KICAgICBJWF9RTUdSX1FfV01fTEVWRUw2NCwJICAgICAvKio8IFEgSGlnaCB3YXRlciBtYXJrICovCiAgIH0sCiAjZW5kaWYKQEAgLTE4NSw3ICsxODUsNyBAQAogICAgIElYX1FNR1JfUV9FTlRSWV9TSVpFMSwJICAgICAvKio8IFF1ZXVlIEVudHJ5IFNpemVzIC0gYWxsIFEgZW50cmllcyBhcmUgc2luZ2xlIHdvcmQgZW50cmllcyAgICovCiAgICAgRkFMU0UsCQkJICAgICAvKio8IERpc2FibGUgUSBub3RpZmljYXRpb24gYXQgc3RhcnR1cCAqLwogICAgIElYX0VUSF9BQ0NfVFhfRlJBTUVfRU5FVDBfUV9TT1VSQ0UsCSAvKio8IFEgQ29uZGl0aW9uIHRvIGRyaXZlIGNhbGxiYWNrICAqLwotICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsIAkgICAgIC8qKjwgUSBMb3cgd2F0ZXIgbWFyayAqLworICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsCSAgICAgLyoqPCBRIExvdyB3YXRlciBtYXJrICovCiAgICAgSVhfUU1HUl9RX1dNX0xFVkVMNjQsCSAgICAgLyoqPCBRIEhpZ2ggd2F0ZXIgbWFyayAqLwogICB9LAogCkBAIC0xOTgsNyArMTk4LDcgQEAKICAgICBJWF9RTUdSX1FfRU5UUllfU0laRTEsCSAgICAgLyoqPCBRdWV1ZSBFbnRyeSBTaXplcyAtIGFsbCBRIGVudHJpZXMgYXJlIHNpbmdsZSB3b3JkIGVudHJpZXMgICAqLwogICAgIEZBTFNFLAkJCSAgICAgLyoqPCBEaXNhYmxlIFEgbm90aWZpY2F0aW9uIGF0IHN0YXJ0dXAgKi8KICAgICBJWF9FVEhfQUNDX1RYX0ZSQU1FX0VORVQxX1FfU09VUkNFLAkgICAgIC8qKjwgUSBDb25kaXRpb24gdG8gZHJpdmUgY2FsbGJhY2sgICovCi0gICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwgCSAgICAgLyoqPCBRIExvdyB3YXRlciBtYXJrICovCisgICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwJICAgICAvKio8IFEgTG93IHdhdGVyIG1hcmsgKi8KICAgICBJWF9RTUdSX1FfV01fTEVWRUw2NCwJICAgICAvKio8IFEgSGlnaCB3YXRlciBtYXJrICovCiAgIH0sCiAjaWZkZWYgX19peHA0NlgKQEAgLTIxMSw3ICsyMTEsNyBAQAogICAgIElYX1FNR1JfUV9FTlRSWV9TSVpFMSwJICAgICAvKiogUXVldWUgRW50cnkgU2l6ZXMgLSBhbGwgUSBlbnRyaWVzIGFyZSBzaW5nbGUgb3JkIGVudHJpZXMgICAqLwogICAgIEZBTFNFLAkJCSAgICAgLyoqIERpc2FibGUgUSBub3RpZmljYXRpb24gYXQgc3RhcnR1cCAqLwogICAgIElYX0VUSF9BQ0NfVFhfRlJBTUVfRU5FVDJfUV9TT1VSQ0UsCSAgICAgLyoqIFEgQ29uZGl0aW9uIHRvIGRyaXZlIGNhbGxiYWNrICAqLwotICAgIElYX1FNR1JfUV9XTV9MRVZFTDAsIAkgICAgIC8qIE5vIHF1ZXVlcyB1c2UgYWxtb3N0IGVtcHR5ICovCisgICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwJICAgICAvKiBObyBxdWV1ZXMgdXNlIGFsbW9zdCBlbXB0eSAqLwogICAgIElYX1FNR1JfUV9XTV9MRVZFTDY0LAkgICAgICAvKiogUSBIaWdoIHdhdGVyIG1hcmsgLSBuZWVkZWQgdXNlZCAgKi8KICAgfSwKICNlbmRpZgpAQCAtMjI0LDcgKzIyNCw3IEBACiAgICAgSVhfUU1HUl9RX0VOVFJZX1NJWkUxLAkgICAgIC8qKjwgUXVldWUgRW50cnkgU2l6ZXMgLSBhbGwgUSBlbnRyaWVzIGFyZSBzaW5nbGUgd29yZCBlbnRyaWVzICAgKi8KICAgICBUUlVFLAkJCSAgICAgLyoqPCBFbmFibGUgUSBub3RpZmljYXRpb24gYXQgc3RhcnR1cCAqLwogICAgIElYX0VUSF9BQ0NfVFhfRlJBTUVfRE9ORV9FVEhfUV9TT1VSQ0UsIC8qKjwgUSBDb25kaXRpb24gdG8gZHJpdmUgY2FsbGJhY2sgICovCi0gICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwgCSAgICAgLyoqPCBRIExvdyB3YXRlciBtYXJrICovCisgICAgSVhfUU1HUl9RX1dNX0xFVkVMMCwJICAgICAvKio8IFEgTG93IHdhdGVyIG1hcmsgKi8KICAgICBJWF9RTUdSX1FfV01fTEVWRUwyLAkgICAgIC8qKjwgUSBIaWdoIHdhdGVyIG1hcmsgLSBuZWVkZWQgYnkgTlBFICovCiAgIH0sCiAKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL0l4RXRoQWNjRGF0YVBsYW5lLmMgYi9jcHUvaXhwL25wZS9JeEV0aEFjY0RhdGFQbGFuZS5jCmluZGV4IGU0NmZjOWIuLmI2MmYwZDAgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvbnBlL0l4RXRoQWNjRGF0YVBsYW5lLmMKKysrIGIvY3B1L2l4cC9ucGUvSXhFdGhBY2NEYXRhUGxhbmUuYwpAQCAtNTQ0LDcgKzU0NCw3IEBACiAJICAgIElYX09TQUxfTUJVRl9NTEVOKHB0cikgPSAobGVuID4+IElYX0VUSE5QRV9BQ0NfTEVOR1RIX09GRlNFVCk7CiAKICAgICAgICAgICAgIC8qIGdldCB0aGUgbmV4dCBwb2ludGVyICovCi0gCSAgICBQVFJfTlBFMlZJUlQoSVhfT1NBTF9NQlVGICosSVhfRVRIQUNDX05FX05FWFQocHRyKSwgbmV4dFB0cik7CisJICAgIFBUUl9OUEUyVklSVChJWF9PU0FMX01CVUYgKixJWF9FVEhBQ0NfTkVfTkVYVChwdHIpLCBuZXh0UHRyKTsKIAkgICAgaWYgKG5leHRQdHIgIT0gTlVMTCkKIAkgICAgewogCQluZXh0UHRyID0gKElYX09TQUxfTUJVRiAqKSgoVUlOVDggKiluZXh0UHRyIC0gb2Zmc2V0b2YoSVhfT1NBTF9NQlVGLGl4X25lKSk7CmRpZmYgLS1naXQgYS9jcHUvaXhwL25wZS9JeEV0aEFjY01hYy5jIGIvY3B1L2l4cC9ucGUvSXhFdGhBY2NNYWMuYwppbmRleCBkNTdlNzE2Li4zNjllZTkxIDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9JeEV0aEFjY01hYy5jCisrKyBiL2NwdS9peHAvbnBlL0l4RXRoQWNjTWFjLmMKQEAgLTI0MjMsMTQgKzI0MjMsMTQgQEAKICAgICAgICAgUkVHX1JFQUQoaXhFdGhBY2NNYWNCYXNlW3BvcnRJZF0sCiAJCSBJWF9FVEhfQUNDX01BQ19SWF9DTlRSTDEsCiAJCSByZWd2YWwpOwotIAlSRUdfV1JJVEUoaXhFdGhBY2NNYWNCYXNlW3BvcnRJZF0sCisJUkVHX1dSSVRFKGl4RXRoQWNjTWFjQmFzZVtwb3J0SWRdLAogCQkgIElYX0VUSF9BQ0NfTUFDX1JYX0NOVFJMMSwKIAkJICByZWd2YWwgJiB+SVhfRVRIX0FDQ19SWF9DTlRSTDFfUlhfRU4pOwogCiAgICAgICAgIFJFR19SRUFEKGl4RXRoQWNjTWFjQmFzZVtwb3J0SWRdLAogCQkgSVhfRVRIX0FDQ19NQUNfVFhfQ05UUkwxLAogCQkgcmVndmFsKTsKLSAJUkVHX1dSSVRFKGl4RXRoQWNjTWFjQmFzZVtwb3J0SWRdLAorCVJFR19XUklURShpeEV0aEFjY01hY0Jhc2VbcG9ydElkXSwKIAkJICBJWF9FVEhfQUNDX01BQ19UWF9DTlRSTDEsCiAJCSAgcmVndmFsICYgfklYX0VUSF9BQ0NfVFhfQ05UUkwxX1RYX0VOKTsKICAgICB9CkBAIC0yNDkzLDcgKzI0OTMsNyBAQAogICAgICAgICBSRUdfUkVBRChpeEV0aEFjY01hY0Jhc2VbcG9ydElkXSwKIAkJIElYX0VUSF9BQ0NfTUFDX1RYX0NOVFJMMSwKIAkJIHJlZ3ZhbCk7Ci0gCVJFR19XUklURShpeEV0aEFjY01hY0Jhc2VbcG9ydElkXSwKKwlSRUdfV1JJVEUoaXhFdGhBY2NNYWNCYXNlW3BvcnRJZF0sCiAJCSAgSVhfRVRIX0FDQ19NQUNfVFhfQ05UUkwxLAogCQkgIHJlZ3ZhbCB8IElYX0VUSF9BQ0NfVFhfQ05UUkwxX1RYX0VOKTsKICAgICB9CmRpZmYgLS1naXQgYS9jcHUvaXhwL25wZS9JeEV0aEFjY01paS5jIGIvY3B1L2l4cC9ucGUvSXhFdGhBY2NNaWkuYwppbmRleCA4NjM2OGE0Li5kMjgyYWE2IDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9JeEV0aEFjY01paS5jCisrKyBiL2NwdS9peHAvbnBlL0l4RXRoQWNjTWlpLmMKQEAgLTMyNCw3ICszMjQsNyBAQAogCiAJLypUaGUgIkdPIiBiaXQgaXMgcmVzZXQgdG8gMCB3aGVuIHRoZSB3cml0ZSBjb21wbGV0ZXMqLwogCWlmKChyZWd2YWwgJiBJWF9FVEhfQUNDX01JSV9HTykgPT0gMHgwKQotCXsJICAgIAkgICAgCisJewkJICAgIAogCSAgICBicmVhazsKIAl9CiAJLyogU2xlZXAgZm9yIGEgd2hpbGUgKi8KZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL0l4TnBlRGxJbWFnZU1nci5jIGIvY3B1L2l4cC9ucGUvSXhOcGVEbEltYWdlTWdyLmMKaW5kZXggNzViNDJmMi4uY2NjMGRhNyAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvSXhOcGVEbEltYWdlTWdyLmMKKysrIGIvY3B1L2l4cC9ucGUvSXhOcGVEbEltYWdlTWdyLmMKQEAgLTE2NCw3ICsxNjQsNyBAQAogCQkJCSAKIFBSSVZBVEUgQk9PTAogaXhOcGVEbEltYWdlTWdyTnBlRnVuY3Rpb25JZENvbXBhcmUgKEl4TnBlRGxJbWFnZUlkICppbWFnZUlkQSwKLSAgICAJCQkJICAgICAgIEl4TnBlRGxJbWFnZUlkICppbWFnZUlkQik7CisJCQkJICAgICAgIEl4TnBlRGxJbWFnZUlkICppbWFnZUlkQik7CiAKICNpZiAwCiBQUklWQVRFIElYX1NUQVRVUwpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvSXhOcGVEbE5wZU1nclV0aWxzLmMgYi9jcHUvaXhwL25wZS9JeE5wZURsTnBlTWdyVXRpbHMuYwppbmRleCA5ZGNmM2MxLi4xOGNhYzUwIDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9JeE5wZURsTnBlTWdyVXRpbHMuYworKysgYi9jcHUvaXhwL25wZS9JeE5wZURsTnBlTWdyVXRpbHMuYwpAQCAtNjEzLDkgKzYxMyw5IEBACiAKICAgICBpZiAodmVyaWZ5KQogICAgIHsKLSAgICAJc3RhdHVzID0gaXhOcGVEbE5wZU1nckxvZ2ljYWxSZWdSZWFkIChucGVCYXNlQWRkcmVzcywgcmVnQWRkciwKLSAgICAJCQkJCQkgICByZWdTaXplLCBjdHh0TnVtLCAmcmV0UmVnVmFsKTsKLSAgICAJCQkJCQkgICAKKwlzdGF0dXMgPSBpeE5wZURsTnBlTWdyTG9naWNhbFJlZ1JlYWQgKG5wZUJhc2VBZGRyZXNzLCByZWdBZGRyLAorCQkJCQkJICAgcmVnU2l6ZSwgY3R4dE51bSwgJnJldFJlZ1ZhbCk7CisJCQkJCQkgICAKICAgICAgICAgaWYgKElYX1NVQ0NFU1MgPT0gc3RhdHVzKQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAocmVnVmFsICE9IHJldFJlZ1ZhbCkKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL0l4T3NhbElvTWVtLmMgYi9jcHUvaXhwL25wZS9JeE9zYWxJb01lbS5jCmluZGV4IDllNTQwYzEuLjM0ZGY5MmIgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvbnBlL0l4T3NhbElvTWVtLmMKKysrIGIvY3B1L2l4cC9ucGUvSXhPc2FsSW9NZW0uYwpAQCAtMjgxLDcgKzI4MSw3IEBACiAgKiBSZXR1cm4gdmFsdWU6IGNvcnJlc3BvbmRpbmcgcGh5c2ljYWwgYWRkcmVzcywgb3IgTlVMTCAKICAqICAgICAgICAgICAgICAgaWYgdGhlcmUgaXMgbm8gcGh5c2ljYWwgYWRkcmVzcyBhZGRyZXNzYWJsZSAKICAqICAgICAgICAgICAgICAgYnkgdGhlIGdpdmVuIHZpcnR1YWwgYWRkcmVzcwotICogT1M6IAlWeFdvcmtzLCBMaW51eCwgV2luQ0UsIFFOWCwgZUNvcworICogT1M6CVZ4V29ya3MsIExpbnV4LCBXaW5DRSwgUU5YLCBlQ29zCiAgKiBSZWVudHJhbnQ6IFllcwogICogSVJRIHNhZmU6IFllcwogICovCkBAIC0zMTAsNyArMzEwLDcgQEAKICAqIFJldHVybiB2YWx1ZTogY29ycmVzcG9uZGluZyBwaHlzaWNhbCBhZGRyZXNzLCBvciBOVUxMIAogICogICAgICAgICAgICAgICBpZiB0aGVyZSBpcyBubyBwaHlzaWNhbCBhZGRyZXNzIGFkZHJlc3NhYmxlIAogICogICAgICAgICAgICAgICBieSB0aGUgZ2l2ZW4gdmlydHVhbCBhZGRyZXNzCi0gKiBPUzogCVZ4V29ya3MsIExpbnV4LCBXaW5DRSwgUU5YLCBlQ29zCisgKiBPUzoJVnhXb3JrcywgTGludXgsIFdpbkNFLCBRTlgsIGVDb3MKICAqIFJlZW50cmFudDogWWVzCiAgKiBJUlEgc2FmZTogWWVzCiAgKi8KZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL0l4UU1nckFxbUlmLmMgYi9jcHUvaXhwL25wZS9JeFFNZ3JBcW1JZi5jCmluZGV4IGIyN2IzYTIuLjczODY1MTMgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvbnBlL0l4UU1nckFxbUlmLmMKKysrIGIvY3B1L2l4cC9ucGUvSXhRTWdyQXFtSWYuYwpAQCAtMjA5LDcgKzIwOSw3IEBACiAJICovCiAKIAkvKiBBUU0gUXVldWUgYWNjZXNzIHJlZyBhZGRyZXNzZXMsIHBlciBxdWV1ZSAqLwotICAgCWl4UU1nckFxbUlmUXVlQWNjUmVnQWRkcltpXSA9IAorCWl4UU1nckFxbUlmUXVlQWNjUmVnQWRkcltpXSA9IAogCSAgICAoVUlOVDMyICopKGFxbUJhc2VBZGRyZXNzICsgSVhfUU1HUl9RX0FDQ0VTU19BRERSX0dFVChpKSk7CiAJaXhRTWdyUUlubGluZWRSZWFkV3JpdGVJbmZvW2ldLnFBY2NSZWdBZGRyID0gCiAJICAgICh2b2xhdGlsZSBVSU5UMzIgKikoYXFtQmFzZUFkZHJlc3MgKyBJWF9RTUdSX1FfQUNDRVNTX0FERFJfR0VUKGkpKTsKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL0l4UU1nclFBY2Nlc3MuYyBiL2NwdS9peHAvbnBlL0l4UU1nclFBY2Nlc3MuYwppbmRleCAyYzNlMzAyLi44ODg1NzM2IDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9JeFFNZ3JRQWNjZXNzLmMKKysrIGIvY3B1L2l4cC9ucGUvSXhRTWdyUUFjY2Vzcy5jCkBAIC0zNjAsNyArMzYwLDcgQEAKIAkgICAgfQogCSAgICBlbHNlCiAJICAgIHsKLSAgCSAgICAgICAvKiBUaGUgcXVldWUgaXMgZWl0aGVyIGVtcHR5LCBlaXRoZXIgbW92aW5nLAorCSAgICAgICAvKiBUaGUgcXVldWUgaXMgZWl0aGVyIGVtcHR5LCBlaXRoZXIgbW92aW5nLAogCSAgICAgICAgKiBDbGllbnQgY2FuIHJldHJ5IGlmIHRoZXkgd2lzaAogCSAgICAgICAgKi8KIAkJKm51bUVudHJpZXNQdHIgPSAwOwpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeERtYUFjYy5oIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeERtYUFjYy5oCmluZGV4IDUzZDI2MjUuLjQ1Yzc1MjcgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhEbWFBY2MuaAorKysgYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4RG1hQWNjLmgKQEAgLTE3Miw3ICsxNzIsNyBAQAogI2RlZmluZSBJWF9ETUFfUkVRVUVTVF9GVUxMIDE2CiAKIC8qKgotICogQGluZ3JvdXAgCUl4RG1hQWNjCisgKiBAaW5ncm91cAlJeERtYUFjYwogICogQGJyaWVmICAgICAgIERNQSBjb21wbGV0aW9uIG5vdGlmaWNhdGlvbgogICogVGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgdG8gbm90aWZ5IGEgY2xpZW50IHRoYXQgdGhlIERNQSBoYXMgYmVlbiBjb21wbGV0ZWQKICAqIEBwYXJhbSBzdGF0dXMgQHJlZiBJeERtYVJldHVyblN0YXR1cyBbb3V0XSAtIHJlcG9ydGluZyB0byBjbGllbnQKQEAgLTE4MSwxMSArMTgxLDExIEBACiB0eXBlZGVmIHZvaWQgKCpJeERtYUFjY0RtYUNvbXBsZXRlQ2FsbGJhY2spIChJeERtYVJldHVyblN0YXR1cyBzdGF0dXMpOwogCiAvKioKLSAqIEBpbmdyb3VwIAlJeERtYUFjYworICogQGluZ3JvdXAJSXhEbWFBY2MKICAqIAogICogQGZuIGl4RG1hQWNjSW5pdChJeE5wZURsTnBlSWQgbnBlSWQpCiAgKiAKLSAqIEBicmllZiAJSW5pdGlhbGlzZSB0aGUgRE1BIEFjY2VzcyBjb21wb25lbnQKKyAqIEBicmllZglJbml0aWFsaXNlIHRoZSBETUEgQWNjZXNzIGNvbXBvbmVudAogICogVGhpcyBmdW5jdGlvbiB3aWxsIGluaXRpYWxpc2UgdGhlIERNQSBBY2Nlc3MgY29tcG9uZW50IGludGVybmFscwogICogQHBhcmFtIG5wZUlkIEByZWYgSXhOcGVEbE5wZUlkIFtpbl0gLSBOUEUgdG8gdXNlIGZvciBEbWEgVHJhbnNmZXIKICAqIEByZXR1cm4gQGxpIElYX1NVQ0NFU1Mgc3VjY2VzZnVsbHkgaW5pdGlhbGlzZWQgdGhlIGNvbXBvbmVudApAQCAtMTk2LDcgKzE5Niw3IEBACiBpeERtYUFjY0luaXQoSXhOcGVEbE5wZUlkIG5wZUlkKTsKIAogLyoqCi0gKiBAaW5ncm91cCAJSXhEbWFBY2MKKyAqIEBpbmdyb3VwCUl4RG1hQWNjCiAgKiAKICAqIEBmbiBpeERtYUFjY0RtYVRyYW5zZmVyKAogICAgIEl4RG1hQWNjRG1hQ29tcGxldGVDYWxsYmFjayBjYWxsYmFjaywKQEAgLTIyNSw4ICsyMjUsOCBAQAogICogQHBhcmFtIEFkZHJlc3NpbmdNb2RlIEByZWYgSXhEbWFBZGRyZXNzaW5nTW9kZSBbaW5dIC0gVGhlIERNQSBhZGRyZXNzaW5nIG1vZGUKICAqIEBwYXJhbSBUcmFuc2ZlcldpZHRoCUByZWYgSXhEbWFUcmFuc2ZlcldpZHRoIFtpbl0gLSBUaGUgRE1BIHRyYW5zZmVyIHdpZHRoCiAgKgotICogQHJldHVybiBAbGkgSVhfRE1BX1NVQ0NFU1MgCU5vdGlmaWNhdGlvbiB0aGF0IHRoZSBETUEgcmVxdWVzdCBpcyBzdWNjZXNmdWwKLSAqIEByZXR1cm4gQGxpIElYX0RNQV9GQUlMIAlJeERtYUFjYyBub3QgeWV0IGluaXRpYWxpc2VkIG9yIHNvbWUgaW50ZXJuYWwgZXJyb3IgaGFzIG9jY3VyZWQKKyAqIEByZXR1cm4gQGxpIElYX0RNQV9TVUNDRVNTCU5vdGlmaWNhdGlvbiB0aGF0IHRoZSBETUEgcmVxdWVzdCBpcyBzdWNjZXNmdWwKKyAqIEByZXR1cm4gQGxpIElYX0RNQV9GQUlMCUl4RG1hQWNjIG5vdCB5ZXQgaW5pdGlhbGlzZWQgb3Igc29tZSBpbnRlcm5hbCBlcnJvciBoYXMgb2NjdXJlZAogICogQHJldHVybiBAbGkgSVhfRE1BX0lOVkFMSURfVFJBTlNGRVJfV0lEVEggVHJhbnNmZXIgd2lkdGggaXMgbml0IHZhbGlkCiAgKiBAcmV0dXJuIEBsaSBJWF9ETUFfSU5WQUxJRF9UUkFOU0ZFUl9MRU5HVEggVHJhbnNmZXIgbGVuZ3RoIG91dHNpZGUgb2YgdmFsaWQgcmFuZ2UKICAqIEByZXR1cm4gQGxpIElYX0RNQV9JTlZBTElEX1RSQU5TRkVSX01PREUgVHJhbnNmZXIgTW9kZSBub3QgdmFsaWQKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhFdGhBY2MuaCBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhFdGhBY2MuaAppbmRleCBiNDI0NjQ4Li5mZjcwNmM0IDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4RXRoQWNjLmgKKysrIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjYy5oCkBAIC02MjYsOCArNjI2LDggQEAKICAqICAgcmVxdWlyZWQgZmVhdHVyZXMuCiAgKgogICogRGVwZW5kYW50IG9uIFNlcnZpY2VzOiAoTXVzdCBiZSBpbml0aWFsaXplZCBiZWZvcmUgdXNpbmcgdGhpcyBzZXJ2aWNlIG1heSBiZSBpbml0aWFsaXplZCkKLSAqIAlpeE5QRW1oIC0gTlBFIE1lc3NhZ2UgaGFuZGxpbmcgc2VydmljZS4KLSAqIAlpeFFtZ3IJLSBRdWV1ZSBNYW5hZ2VyIGNvbXBvbmVudC4KKyAqCWl4TlBFbWggLSBOUEUgTWVzc2FnZSBoYW5kbGluZyBzZXJ2aWNlLgorICoJaXhRbWdyCS0gUXVldWUgTWFuYWdlciBjb21wb25lbnQuCiAgKgogICogQHBhcmFtIHBvcnRJZCAgQHJlZiBJeEV0aEFjY1BvcnRJZCBbaW5dCiAgKgpAQCAtNzQ1LDcgKzc0NSw3IEBACiAgKgogICogQGZuIGl4RXRoQWNjUG9ydFR4RG9uZUNhbGxiYWNrUmVnaXN0ZXIoIEl4RXRoQWNjUG9ydElkIHBvcnRJZCwgCiAJCQkJCSAgIEl4RXRoQWNjUG9ydFR4RG9uZUNhbGxiYWNrIHR4Q2FsbGJhY2tGbiwgCi0gCQkJCQkgICBVSU5UMzIgY2FsbGJhY2tUYWcpCisJCQkJCSAgIFVJTlQzMiBjYWxsYmFja1RhZykKICAqCiAgKiBAYnJpZWYgUmVnaXN0ZXIgYSBjYWxsYmFjayBmdW5jdGlvbiB0byBhbGxvdyAKICAqIHRoZSB0cmFuc21pdHRlZCBidWZmZXJzIHRvIHJldHVybiB0byB0aGUgdXNlci4KZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhFdGhBY2NNaWlfcC5oIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjY01paV9wLmgKaW5kZXggYWE0MmY5Yy4uNTY4ZDRhMCAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjY01paV9wLmgKKysrIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjY01paV9wLmgKQEAgLTgxLDEzICs4MSwxMyBAQAogI2RlZmluZSBJWF9FVEhfQUNDX01JSV9TVEFUX1JFRwkgICAgMHgxCS8qIFN0YXR1cyBSZWdpc3RlciAqLwogI2RlZmluZSBJWF9FVEhfQUNDX01JSV9QSFlfSUQxX1JFRyAgMHgyCS8qIFBIWSBpZGVudGlmaWVyIDEgUmVnaXN0ZXIgKi8KICNkZWZpbmUgSVhfRVRIX0FDQ19NSUlfUEhZX0lEMl9SRUcgIDB4MwkvKiBQSFkgaWRlbnRpZmllciAyIFJlZ2lzdGVyICovCi0jZGVmaW5lIElYX0VUSF9BQ0NfTUlJX0FOX0FEU19SRUcgICAweDQJLyogQXV0by1OZWdvdGlhdGlvbiAJICAqLworI2RlZmluZSBJWF9FVEhfQUNDX01JSV9BTl9BRFNfUkVHICAgMHg0CS8qIEF1dG8tTmVnb3RpYXRpb24JICAqLwogCQkJCQkvKiBBZHZlcnRpc2VtZW50IFJlZ2lzdGVyICovCi0jZGVmaW5lIElYX0VUSF9BQ0NfTUlJX0FOX1BSVE5fUkVHICAweDUJLyogQXV0by1OZWdvdGlhdGlvbiAJICAgICovCisjZGVmaW5lIElYX0VUSF9BQ0NfTUlJX0FOX1BSVE5fUkVHICAweDUJLyogQXV0by1OZWdvdGlhdGlvbgkgICAgKi8KIAkJCQkJLyogcGFydG5lciBhYmlsaXR5IFJlZ2lzdGVyICovCiAjZGVmaW5lIElYX0VUSF9BQ0NfTUlJX0FOX0VYUF9SRUcgICAweDYJLyogQXV0by1OZWdvdGlhdGlvbiAgICovCiAJCQkJCS8qIEV4cGFuc2lvbiBSZWdpc3RlciAqLwotI2RlZmluZSBJWF9FVEhfQUNDX01JSV9BTl9ORVhUX1JFRyAgMHg3CS8qIEF1dG8tTmVnb3RpYXRpb24gCSAgICAgICAqLworI2RlZmluZSBJWF9FVEhfQUNDX01JSV9BTl9ORVhUX1JFRyAgMHg3CS8qIEF1dG8tTmVnb3RpYXRpb24JICAgICAgICovCiAJCQkJCS8qIG5leHQtcGFnZSB0cmFuc21pdCBSZWdpc3RlciAqLwogCiBJeEV0aEFjY1N0YXR1cyBpeEV0aEFjY01kaW9TaG93ICh2b2lkKTsKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhFdGhBY2NfcC5oIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjY19wLmgKaW5kZXggMzdjNTU2MC4uMGVlNDEyMyAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjY19wLmgKKysrIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aEFjY19wLmgKQEAgLTI2Miw3ICsyNjIsNyBAQAogewogICBJeEV0aEFjY1BvcnRUeERvbmVDYWxsYmFjayAgdHhCdWZmZXJEb25lQ2FsbGJhY2tGbjsKICAgVUlOVDMyICB0eENhbGxiYWNrVGFnOwotICBJeEV0aEFjY0RhdGFQbGFuZVFMaXN0IAl0eFFbSVhfRVRIX0FDQ19OVU1fVFhfUFJJT1JJVElFU107IC8qKjwgVHJhbnNtaXQgUSAqLworICBJeEV0aEFjY0RhdGFQbGFuZVFMaXN0CXR4UVtJWF9FVEhfQUNDX05VTV9UWF9QUklPUklUSUVTXTsgLyoqPCBUcmFuc21pdCBRICovCiAgIEl4RXRoQWNjU2NoZWR1bGVyRGlzY2lwbGluZSBzY2hEaXNjaXBsaW5lOyAvKio8IFRyYW5zbWl0IFhzY2FsZSBRb1MgKi8KICAgSXhRTWdyUUlkIHR4UXVldWU7IC8qKjwgdHhRdWV1ZSBmb3IgdGhpcyBwb3J0ICovCiAgIEl4RXRoQWNjVHhEYXRhU3RhdHMgc3RhdHM7IC8qKjwgVHJhbnNtaXQgcy93IHN0YXRzICovCmRpZmYgLS1naXQgYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4RXRoTWlpLmggYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4RXRoTWlpLmgKaW5kZXggYTFiZmUwNi4uMzk3MjUzYSAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEV0aE1paS5oCisrKyBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhFdGhNaWkuaApAQCAtMTA2LDkgKzEwNiw5IEBACiAgKiBAaW5ncm91cCBJeEV0aE1paQogICoKICAqIEBmbiBpeEV0aE1paVBoeUNvbmZpZyhVSU5UMzIgcGh5QWRkciwKLSAgIAkJICAgICAgICAgQk9PTCBzcGVlZDEwMCwgCi0gCQkJIEJPT0wgZnVsbER1cGxleCwgCi0gCQkJIEJPT0wgYXV0b25lZ290aWF0ZSkKKwkJICAgICAgICAgQk9PTCBzcGVlZDEwMCwgCisJCQkgQk9PTCBmdWxsRHVwbGV4LCAKKwkJCSBCT09MIGF1dG9uZWdvdGlhdGUpCiAgKgogICoKICAqIEBicmllZiBDb25maWd1cmUgYSBQSFkKQEAgLTIwOSwxMCArMjA5LDEwIEBACiAgKiBAaW5ncm91cCBJeEV0aE1paQogICoKICAqIEBmbiBpeEV0aE1paUxpbmtTdGF0dXMoVUlOVDMyIHBoeUFkZHIsIAotIAkJCSAgQk9PTCAqbGlua1VwLAotIAkJCSAgQk9PTCAqc3BlZWQxMDAsIAotIAkJCSAgQk9PTCAqZnVsbER1cGxleCwKLSAJCSAgICAgICAgICBCT09MICphdXRvbmVnKQorCQkJICBCT09MICpsaW5rVXAsCisJCQkgIEJPT0wgKnNwZWVkMTAwLCAKKwkJCSAgQk9PTCAqZnVsbER1cGxleCwKKwkJICAgICAgICAgIEJPT0wgKmF1dG9uZWcpCiAgKgogICogQGJyaWVmIFJldHJpZXZlIHRoZSBjdXJyZW50IHN0YXR1cyBvZiBhIFBIWQogICogICBSZXRyaWV2ZSB0aGUgbGluaywgc3BlZWQsIGR1cGxleCBhbmQgYXV0b25lZ290aWF0aW9uIHN0YXR1cyBvZiBhIFBIWQpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEkyY0Rydi5oIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeEkyY0Rydi5oCmluZGV4IDI0NzJmMzEuLjkyYzZiMjQgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhJMmNEcnYuaAorKysgYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4STJjRHJ2LmgKQEAgLTY0LDggKzY0LDggQEAKIC8qKgogICogQGluZ3JvdXAgSXhJMmNEcnYKICAqIEBicmllZiBUaGUgaW50ZXJ2YWwgb2YgbWljcm8vbWlsaSBzZWNvbmRzIHRoZSBJWFAgd2lsbCB3YWl0IGJlZm9yZSBpdCBwb2xscyBmb3IKLSAqIAkJCXN0YXR1cyBmcm9tIHRoZSBpeEkyY0ludHJYZmVyU3RhdHVzOyBFdmVyeSAyMHVzIGlzIDEgYnl0ZSBACi0gKiAJCQk0MDBLYnBzIGFuZCA0IGJ5dGVzCUAgMTAwS2Jwcy4gVGhpcyBpcyBkZXBlbmRlbnQgb24gZGVsYXkgdHlwZSBzZWxlY3RlZAorICoJCQlzdGF0dXMgZnJvbSB0aGUgaXhJMmNJbnRyWGZlclN0YXR1czsgRXZlcnkgMjB1cyBpcyAxIGJ5dGUgQAorICoJCQk0MDBLYnBzIGFuZCA0IGJ5dGVzCUAgMTAwS2Jwcy4gVGhpcyBpcyBkZXBlbmRlbnQgb24gZGVsYXkgdHlwZSBzZWxlY3RlZAogICogICAgICAgICAgdGhyb3VnaCB0aGUgQVBJIGl4STJjRHJ2RGVsYXlUeXBlU2VsZWN0LgogICovCiAjZGVmaW5lIElYX0kyQ19VU19QT0xMX0ZPUl9YRkVSX1NUQVRVUwkyMApkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxBc3NlcnQuaCBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsQXNzZXJ0LmgKaW5kZXggNDVjZWJjZC4uMDRhNGY1MSAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxBc3NlcnQuaAorKysgYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbEFzc2VydC5oCkBAIC0xLDYgKzEsNiBAQAogLyoKICAqIEBmaWxlICAgICAgICBJeE9zYWxBc3NlcnQuaCAKLSAqIEBhdXRob3IgCUludGVsIENvcnBvcmF0aW9uCisgKiBAYXV0aG9yCUludGVsIENvcnBvcmF0aW9uCiAgKiBAZGF0ZSAgICAgICAgMjUtMDgtMjAwNAogICoKICAqIEBicmllZiAgICAgICBkZXNjcmlwdGlvbiBnb2VzIGhlcmUKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsQmFja3dhcmRCdWZmZXJNZ3QuaCBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsQmFja3dhcmRCdWZmZXJNZ3QuaAppbmRleCA1YWMzZjBjLi40Y2Y4MGQzIDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbEJhY2t3YXJkQnVmZmVyTWd0LmgKKysrIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxCYWNrd2FyZEJ1ZmZlck1ndC5oCkBAIC03Niw3ICs3Niw3IEBACiAjZGVmaW5lIElYX01CVUZfTVRZUEUobV9ibGtfcHRyKSBcCiAgICAgICAgICAgICAgICAgSVhfT1NBTF9NQlVGX01UWVBFKG1fYmxrX3B0cikKIAotI2RlZmluZSBJWF9NQlVGX0ZMQUdTKG1fYmxrX3B0cikgICAJXAorI2RlZmluZSBJWF9NQlVGX0ZMQUdTKG1fYmxrX3B0cikJXAogCQlJWF9PU0FMX01CVUZfRkxBR1MobV9ibGtfcHRyKQogCiAKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsQmFja3dhcmRNZW1NYXAuaCBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsQmFja3dhcmRNZW1NYXAuaAppbmRleCAxOGY4ZjI0Li4zODgxYTNiIDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbEJhY2t3YXJkTWVtTWFwLmgKKysrIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxCYWNrd2FyZE1lbU1hcC5oCkBAIC0xMzYsNiArMTM2LDYgQEAKIAogI2RlZmluZSBJWF9PU1NFUlZfTUVNX01BUChwaHlzQWRkciwgc2l6ZSkJCUlYX09TQUxfTUVNX01BUChwaHlzQWRkciwgc2l6ZSkKIAotI2RlZmluZSBJWF9PU1NFUlZfTUVNX1VOTUFQKHZpcnRBZGRyKSAJCQlJWF9PU0FMX01FTV9VTk1BUCh2aXJ0QWRkcikKKyNkZWZpbmUgSVhfT1NTRVJWX01FTV9VTk1BUCh2aXJ0QWRkcikJCQlJWF9PU0FMX01FTV9VTk1BUCh2aXJ0QWRkcikKIAogI2VuZGlmIC8qIElYX09TQUxfQkFDS1dBUkRfTUVNX01BUF9IICovCmRpZmYgLS1naXQgYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbElvTWVtLmggYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbElvTWVtLmgKaW5kZXggYWMwY2U2NS4uZWE2ZDY0ZCAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxJb01lbS5oCisrKyBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsSW9NZW0uaApAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBAZmlsZSAgICAgICAgSXhPc2FsSW9NZW0uaAotICogQGF1dGhvciAJSW50ZWwgQ29ycG9yYXRpb24KKyAqIEBhdXRob3IJSW50ZWwgQ29ycG9yYXRpb24KICAqIEBkYXRlICAgICAgICAyNS0wOC0yMDA0CiAgKgogICogQGJyaWVmICAgICAgIGRlc2NyaXB0aW9uIGdvZXMgaGVyZQpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxNZW1BY2Nlc3MuaCBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsTWVtQWNjZXNzLmgKaW5kZXggMmFkMGNjZi4uOWU3ZmI4NyAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxNZW1BY2Nlc3MuaAorKysgYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbE1lbUFjY2Vzcy5oCkBAIC00MTAsNyArNDEwLDcgQEAKICNkZWZpbmUgSVhfT1NBTF9SRUFEX0xPTkcod0FkZHIpICAgICAgICAgICAgSVhfT1NBTF9SRUFEX0xPTkdfQkUod0FkZHIpIAogI2RlZmluZSBJWF9PU0FMX1JFQURfU0hPUlQoc0FkZHIpCSAgICAgICAgSVhfT1NBTF9SRUFEX1NIT1JUX0JFKHNBZGRyKSAKICNkZWZpbmUgSVhfT1NBTF9SRUFEX0JZVEUoYkFkZHIpCSAgICAgICAgSVhfT1NBTF9SRUFEX0JZVEVfQkUoYkFkZHIpIAotI2RlZmluZSBJWF9PU0FMX1dSSVRFX0xPTkcod0FkZHIsIHdEYXRhKSAJSVhfT1NBTF9XUklURV9MT05HX0JFKHdBZGRyLCB3RGF0YSkKKyNkZWZpbmUgSVhfT1NBTF9XUklURV9MT05HKHdBZGRyLCB3RGF0YSkJSVhfT1NBTF9XUklURV9MT05HX0JFKHdBZGRyLCB3RGF0YSkKICNkZWZpbmUgSVhfT1NBTF9XUklURV9TSE9SVChzQWRkciwgc0RhdGEpCUlYX09TQUxfV1JJVEVfU0hPUlRfQkUoc0FkZHIsIHNEYXRhKQogI2RlZmluZSBJWF9PU0FMX1dSSVRFX0JZVEUoYkFkZHIsIGJEYXRhKQlJWF9PU0FMX1dSSVRFX0JZVEVfQkUoYkFkZHIsIGJEYXRhKQogCkBAIC00MTksNyArNDE5LDcgQEAKICNkZWZpbmUgSVhfT1NBTF9SRUFEX0xPTkcod0FkZHIpICAgICAgICAgICAgSVhfT1NBTF9SRUFEX0xPTkdfTEVfQUMod0FkZHIpIAogI2RlZmluZSBJWF9PU0FMX1JFQURfU0hPUlQoc0FkZHIpCSAgICAgICAgSVhfT1NBTF9SRUFEX1NIT1JUX0xFX0FDKHNBZGRyKSAKICNkZWZpbmUgSVhfT1NBTF9SRUFEX0JZVEUoYkFkZHIpCSAgICAgICAgSVhfT1NBTF9SRUFEX0JZVEVfTEVfQUMoYkFkZHIpIAotI2RlZmluZSBJWF9PU0FMX1dSSVRFX0xPTkcod0FkZHIsIHdEYXRhKSAJSVhfT1NBTF9XUklURV9MT05HX0xFX0FDKHdBZGRyLCB3RGF0YSkKKyNkZWZpbmUgSVhfT1NBTF9XUklURV9MT05HKHdBZGRyLCB3RGF0YSkJSVhfT1NBTF9XUklURV9MT05HX0xFX0FDKHdBZGRyLCB3RGF0YSkKICNkZWZpbmUgSVhfT1NBTF9XUklURV9TSE9SVChzQWRkciwgc0RhdGEpCUlYX09TQUxfV1JJVEVfU0hPUlRfTEVfQUMoc0FkZHIsIHNEYXRhKQogI2RlZmluZSBJWF9PU0FMX1dSSVRFX0JZVEUoYkFkZHIsIGJEYXRhKQlJWF9PU0FMX1dSSVRFX0JZVEVfTEVfQUMoYkFkZHIsIGJEYXRhKQogCkBAIC00MjgsNyArNDI4LDcgQEAKICNkZWZpbmUgSVhfT1NBTF9SRUFEX0xPTkcod0FkZHIpICAgICAgICAgICAgSVhfT1NBTF9SRUFEX0xPTkdfTEVfREMod0FkZHIpIAogI2RlZmluZSBJWF9PU0FMX1JFQURfU0hPUlQoc0FkZHIpCSAgICAgICAgSVhfT1NBTF9SRUFEX1NIT1JUX0xFX0RDKHNBZGRyKSAKICNkZWZpbmUgSVhfT1NBTF9SRUFEX0JZVEUoYkFkZHIpCSAgICAgICAgSVhfT1NBTF9SRUFEX0JZVEVfTEVfREMoYkFkZHIpIAotI2RlZmluZSBJWF9PU0FMX1dSSVRFX0xPTkcod0FkZHIsIHdEYXRhKSAJSVhfT1NBTF9XUklURV9MT05HX0xFX0RDKHdBZGRyLCB3RGF0YSkKKyNkZWZpbmUgSVhfT1NBTF9XUklURV9MT05HKHdBZGRyLCB3RGF0YSkJSVhfT1NBTF9XUklURV9MT05HX0xFX0RDKHdBZGRyLCB3RGF0YSkKICNkZWZpbmUgSVhfT1NBTF9XUklURV9TSE9SVChzQWRkciwgc0RhdGEpCUlYX09TQUxfV1JJVEVfU0hPUlRfTEVfREMoc0FkZHIsIHNEYXRhKQogI2RlZmluZSBJWF9PU0FMX1dSSVRFX0JZVEUoYkFkZHIsIGJEYXRhKQlJWF9PU0FMX1dSSVRFX0JZVEVfTEVfREMoYkFkZHIsIGJEYXRhKQogCmRpZmYgLS1naXQgYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbFR5cGVzLmggYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4T3NhbFR5cGVzLmgKaW5kZXggYzYxN2VjNS4uYTE5MGE3MCAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeE9zYWxUeXBlcy5oCisrKyBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhPc2FsVHlwZXMuaApAQCAtMTc1LDcgKzE3NSw3IEBACiAKIAogI2lmbmRlZiBfX2lubGluZV9fCi0jZGVmaW5lIF9faW5saW5lX18gCUlYX09TQUxfSU5MSU5FCisjZGVmaW5lIF9faW5saW5lX18JSVhfT1NBTF9JTkxJTkUKICNlbmRpZgogCiAKZGlmZiAtLWdpdCBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhRTWdyLmggYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4UU1nci5oCmluZGV4IGMwODNhMmIuLjE2NWVkOTYgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhRTWdyLmgKKysrIGIvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeFFNZ3IuaApAQCAtMTEzNCw3ICsxMTM0LDcgQEAKIAkgKiBkYXkgc2NlbmFyaW8gdGhlcmUgYXJlIG1hbnkgZW50cmllcyBpbiB0aGUgcXVldWUKIAkgKiBhbmQgdGhlIGNvdW50ZXIgZG9lcyBub3QgcmVhY2ggemVyby4KIAkgKi8KLSAJaWYgKGluZm9QdHItPnFSZWFkQ291bnQtLSA9PSAwKQorCWlmIChpbmZvUHRyLT5xUmVhZENvdW50LS0gPT0gMCkKIAl7CiAJICAgIC8qIFRoZXJlIGlzIG1heWJlIG5vIGVudHJ5IGluIHRoZSBxdWV1ZQogCSAgICAgKiBxUmVhZENvdW50IGlzIG5vdyBuZWdhdGl2ZSwgYnV0IHdpbGwgYmUgY29ycmVjdGVkIGJlZm9yZQpAQCAtMTQ3NSw3ICsxNDc1LDcgQEAKIAkgICAgKytlbnRyeTsKIAkgICAgSVhfUU1HUl9JTkxJTkVfV1JJVEVfTE9ORygrK3FBY2NSZWdBZGRyLCAqZW50cnkpOwogCX0KLSAJZW50cnlTaXplID0gaW5mb1B0ci0+cUVudHJ5U2l6ZUluV29yZHM7CisJZW50cnlTaXplID0gaW5mb1B0ci0+cUVudHJ5U2l6ZUluV29yZHM7CiAgICAgfQogCiAgICAgLyogb3ZlcmZsb3cgaXMgYXZhaWxhYmxlIGZvciBsb3dlciBxdWV1ZXMgb25seSAqLwpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeFFNZ3JBcW1JZl9wLmggYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4UU1nckFxbUlmX3AuaAppbmRleCA3ZjU3MzNjLi40ZjBmNjRkIDEwMDY0NAotLS0gYS9jcHUvaXhwL25wZS9pbmNsdWRlL0l4UU1nckFxbUlmX3AuaAorKysgYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4UU1nckFxbUlmX3AuaApAQCAtNDk4LDcgKzQ5OCw3IEBACiAgICAgdm9sYXRpbGUgVUlOVDMyICphY2NSZWdBZGRyOwogCiAgICAgYWNjUmVnQWRkciA9IChVSU5UMzIqKShhcW1CYXNlQWRkcmVzcyArCi0gICAgCQkJICAgSVhfUU1HUl9RX0FDQ0VTU19BRERSX0dFVChxSWQpKTsKKwkJCSAgIElYX1FNR1JfUV9BQ0NFU1NfQUREUl9HRVQocUlkKSk7CiAKICAgICBzd2l0Y2ggKG51bVdvcmRzKQogICAgIHsKQEAgLTUzMyw3ICs1MzMsNyBAQAogICAgIHZvbGF0aWxlIFVJTlQzMiAqYWNjUmVnQWRkcjsKIAogICAgIGFjY1JlZ0FkZHIgPSAoVUlOVDMyKikoYXFtQmFzZUFkZHJlc3MgKwotICAgIAkJCSAgIElYX1FNR1JfUV9BQ0NFU1NfQUREUl9HRVQocUlkKSk7CisJCQkgICBJWF9RTUdSX1FfQUNDRVNTX0FERFJfR0VUKHFJZCkpOwogICAgIAogICAgIHN3aXRjaCAobnVtV29yZHMpCiAgICAgewpAQCAtNjgzLDkgKzY4Myw5IEBACiAgICAgICogbXVsdGlwbGUgcXVldWVzIHNwbGl0IGFjY3Jvc3MgcmVnaXN0ZXJzCiAgICAgICovCiAgICAgcmVnaXN0ZXJBZGRyZXNzID0gKFVJTlQzMiopKGFxbUJhc2VBZGRyZXNzICsKLSAgICAJCQkJcmVnaXN0ZXJCYXNlQWRkck9mZnNldCArCi0gICAgCQkJCSgocUlkIC8gcXVldWVzUGVyUmVnV29yZCkgKgotICAgIAkJCQkgSVhfUU1HUl9OVU1fQllURVNfUEVSX1dPUkQpKTsKKwkJCQlyZWdpc3RlckJhc2VBZGRyT2Zmc2V0ICsKKwkJCQkoKHFJZCAvIHF1ZXVlc1BlclJlZ1dvcmQpICoKKwkJCQkgSVhfUU1HUl9OVU1fQllURVNfUEVSX1dPUkQpKTsKIAogICAgIC8qCiAgICAgICogR2V0IHRoZSBzdGF0dXMgd29yZApkaWZmIC0tZ2l0IGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeFF1ZXVlQXNzaWdubWVudHMuaCBiL2NwdS9peHAvbnBlL2luY2x1ZGUvSXhRdWV1ZUFzc2lnbm1lbnRzLmgKaW5kZXggMGMxNTQzZi4uZjcxOTRlNyAxMDA2NDQKLS0tIGEvY3B1L2l4cC9ucGUvaW5jbHVkZS9JeFF1ZXVlQXNzaWdubWVudHMuaAorKysgYi9jcHUvaXhwL25wZS9pbmNsdWRlL0l4UXVldWVBc3NpZ25tZW50cy5oCkBAIC00MDksNyArNDA5LDcgQEAKICogQG5vdGUgVEhJUyBJUyBOT1QgVVNFRCAtIHRoZSBSeCBxdWV1ZXMgYXJlIHJlYWQgZnJvbSBFdGhEQiBRb1MgY29uZmlndXJhdGlvbgogKiAKICovCi0jZGVmaW5lIElYX0VUSF9BQ0NfUlhfRlJBTUVfRVRIX1EgCShJWF9RTUdSX1FVRVVFXzQpCisjZGVmaW5lIElYX0VUSF9BQ0NfUlhfRlJBTUVfRVRIX1EJKElYX1FNR1JfUVVFVUVfNCkKIAogLyoqCiAqCmRpZmYgLS1naXQgYS9jcHUvaXhwL3BjaS5jIGIvY3B1L2l4cC9wY2kuYwppbmRleCA4NGM0MzM5Li44YzZiMGIyIDEwMDY0NAotLS0gYS9jcHUvaXhwL3BjaS5jCisrKyBiL2NwdS9peHAvcGNpLmMKQEAgLTI1OSw3ICsyNTksNyBAQAogCiAvKgogID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSAJCUluaXQgSVhQIFBDSQorCQlJbml0IElYUCBQQ0kKICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAqLwogCVJFR19SRUFEIChQQ0lfQ1NSX0JBU0UsIFBDSV9DU1JfT0ZGU0VULCByZWd2YWwpOwpkaWZmIC0tZ2l0IGEvY3B1L2l4cC9zdGFydC5TIGIvY3B1L2l4cC9zdGFydC5TCmluZGV4IDc1N2NmYWEuLmQ0YzhlMzMgMTAwNjQ0Ci0tLSBhL2NwdS9peHAvc3RhcnQuUworKysgYi9jcHUvaXhwL3N0YXJ0LlMKQEAgLTE0MCw3ICsxNDAsNyBAQAogCUNQV0FJVAlyMAogCiAJLyogaW52YWxpZGF0ZSBJICYgRGF0YSBUTEIgKi8KLQltY3IgCXAxNSwgMCwgcjAsIGM4LCBjNywgMAorCW1jcglwMTUsIDAsIHIwLCBjOCwgYzcsIDAKIAlDUFdBSVQgcjAKIAogCS8qIGRyYWluIHdyaXRlIGFuZCBmaWxsIGJ1ZmZlcnMgKi8KQEAgLTE2MCwyMiArMTYwLDIyIEBACiAKIAkvKiBtYWtlIHN1cmUgZmxhc2ggaXMgdmlzaWJsZSBhdCAwICovCiAjaWYgMAotCWxkciAJcjIsID1JWFA0MjVfRVhQX0NGRzAKKwlsZHIJcjIsID1JWFA0MjVfRVhQX0NGRzAKIAlsZHIgICAgIHIxLCBbcjJdCiAJb3JyICAgICByMSwgcjEsICMweDgwMDAwMDAwCiAJc3RyICAgICByMSwgW3IyXQogI2VuZGlmCi0JbW92IAlyMSwgI0NGR19TRFJfQ09ORklHCisJbW92CXIxLCAjQ0ZHX1NEUl9DT05GSUcKIAlsZHIgICAgIHIyLCA9SVhQNDI1X1NEUl9DT05GSUcKIAlzdHIgICAgIHIxLCBbcjJdCiAKIAkvKiBkaXNhYmxlIHJlZnJlc2ggY3ljbGVzICovCi0JbW92IAlyMSwgIzAKKwltb3YJcjEsICMwCiAJbGRyICAgICByMywgPUlYUDQyNV9TRFJfUkVGUkVTSAogCXN0cglyMSwgW3IzXQogCiAJLyogc2VuZCBub3AgY29tbWFuZCAqLwotCW1vdiAJcjEsICMzCisJbW92CXIxLCAjMwogCWxkcglyNCwgPUlYUDQyNV9TRFJfSVIKIAlzdHIJcjEsIFtyNF0KIAlERUxBWV9GT1IgMHg0MDAwLCByMApAQCAtMjI2LDcgKzIyNiw3IEBACiAJQ1BXQUlUCXIwCiAKIAkvKiBpbnZhbGlkYXRlIEkgJiBEYXRhIFRMQiAqLwotCW1jciAJcDE1LCAwLCByMCwgYzgsIGM3LCAwCisJbWNyCXAxNSwgMCwgcjAsIGM4LCBjNywgMAogCUNQV0FJVCByMAogCiAJLyogZHJhaW4gd3JpdGUgYW5kIGZpbGwgYnVmZmVycyAqLwpAQCAtMjM0LDcgKzIzNCw3IEBACiAJQ1BXQUlUCXIwCiAKIAkvKiBtb3ZlIGZsYXNoIHRvIDB4NTAwMDAwMDAgKi8KLQlsZHIgCXIyLCA9SVhQNDI1X0VYUF9DRkcwCisJbGRyCXIyLCA9SVhQNDI1X0VYUF9DRkcwCiAJbGRyICAgICByMSwgW3IyXQogCWJpYyAgICAgcjEsIHIxLCAjMHg4MDAwMDAwMAogCXN0ciAgICAgcjEsIFtyMl0KQEAgLTI0Nyw3ICsyNDcsNyBAQAogCW5vcAogCiAJLyogaW52YWxpZGF0ZSBJICYgRGF0YSBUTEIgKi8KLQltY3IgCXAxNSwgMCwgcjAsIGM4LCBjNywgMAorCW1jcglwMTUsIDAsIHIwLCBjOCwgYzcsIDAKIAlDUFdBSVQgcjAKIAogCS8qIGVuYWJsZSBJIGNhY2hlICovCkBAIC0yOTMsNyArMjkzLDcgQEAKIGNsZWFyX2JzczoKIAlsZHIJcjAsIF9ic3Nfc3RhcnQJCS8qIGZpbmQgc3RhcnQgb2YgYnNzIHNlZ21lbnQgICAgICAgICovCiAJbGRyCXIxLCBfYnNzX2VuZAkJLyogc3RvcCBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQltb3YgCXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwltb3YJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiBjbGJzc19sOnN0cglyMiwgW3IwXQkJLyogY2xlYXIgbG9vcC4uLiAgICAgICAgICAgICAgICAgICAgKi8KIAlhZGQJcjAsIHIwLCAjNApAQCAtNDgyLDEzICs0ODIsMTMgQEAKIC5nbG9ibCByZXNldF9jcHUKIAogcmVzZXRfY3B1OgotCWxkciAJcjEsID0weDQ4MmUKKwlsZHIJcjEsID0weDQ4MmUKIAlsZHIgICAgIHIyLCA9SVhQNDI1X09TV0sKIAlzdHIgICAgIHIxLCBbcjJdCi0JbGRyIAlyMSwgPTB4MGZmZgorCWxkcglyMSwgPTB4MGZmZgogCWxkciAgICAgcjIsID1JWFA0MjVfT1NXVAogCXN0ciAgICAgcjEsIFtyMl0KLQlsZHIgCXIxLCA9MHg1CisJbGRyCXIxLCA9MHg1CiAJbGRyICAgICByMiwgPUlYUDQyNV9PU1dFCiAJc3RyICAgICByMSwgW3IyXQogCWIJcmVzZXRfZW5kbGVzcwpkaWZmIC0tZ2l0IGEvY3B1L2xlb24yL3N0YXJ0LlMgYi9jcHUvbGVvbjIvc3RhcnQuUwppbmRleCA2MGQzZmFkLi5mMjNmNDk5IDEwMDY0NAotLS0gYS9jcHUvbGVvbjIvc3RhcnQuUworKysgYi9jcHUvbGVvbjIvc3RhcnQuUwpAQCAtMzEsMTAgKzMxLDEwIEBACiAKIC8qIEVudHJ5IGZvciB0cmFwcyB3aGljaCBqdW1wIHRvIGEgcHJvZ3JhbW1lci1zcGVjaWZpZWQgdHJhcCBoYW5kbGVyLiAgKi8KICNkZWZpbmUgVFJBUFIoSCkgIFwKLQl3ciAJJWcwLCAweGZlMCwgJXBzcjsgXAotCW1vdiAJJWcwLCAldGJyOyBcCi0JYmEgCShIKTsgXAotCW1vdiAJJWcwLCAld2ltOworCXdyCSVnMCwgMHhmZTAsICVwc3I7IFwKKwltb3YJJWcwLCAldGJyOyBcCisJYmEJKEgpOyBcCisJbW92CSVnMCwgJXdpbTsKIAogI2RlZmluZSBUUkFQKEgpIFwKIAltb3YJJXBzciwgJWwwOyBcCkBAIC00MiwxMCArNDIsMTAgQEAKIAlub3A7IG5vcDsKIAogI2RlZmluZSBUUkFQSShpbGV2ZWwpIFwKLQltb3YgCWlsZXZlbCwgJWw3OyBcCi0JbW92IAklcHNyLCAlbDA7IFwKLQliIAlfaXJxX2VudHJ5OyBcCi0JbW92IAkld2ltLCAlbDMKKwltb3YJaWxldmVsLCAlbDc7IFwKKwltb3YJJXBzciwgJWwwOyBcCisJYglfaXJxX2VudHJ5OyBcCisJbW92CSV3aW0sICVsMwogCiAvKiBVbmV4Y3BlY3RlZCB0cmFwIHdpbGwgaGFsdCB0aGUgcHJvY2Vzc29yIGJ5IGZvcmNpbmcgaXQgdG8gZXJyb3Igc3RhdGUgKi8KICN1bmRlZiBCQURfVFJBUApAQCAtNzYsNyArNzYsNyBAQAogI2RlZmluZSBTQShYKQkoKChYKSsoU1RBQ0tfQUxJR04tMSkpICYgfihTVEFDS19BTElHTi0xKSkKIAogCS5zZWN0aW9uICIuc3RhcnQiLCAiYXgiCi0JLmdsb2JsIAlfc3RhcnQsIHN0YXJ0LCBfdHJhcF90YWJsZQorCS5nbG9ibAlfc3RhcnQsIHN0YXJ0LCBfdHJhcF90YWJsZQogCS5nbG9ibCAgX2lycV9lbnRyeSwgbm1pX3RyYXAKIAkuZ2xvYmwgIF9yZXNldF9yZWxvYwogCkBAIC01MTUsNyArNTE1LDcgQEAKIAlub3A7IG5vcDsgbm9wCiAJcmVzdG9yZQkJCQkhIFR3byByZXN0b3JlcyB0byBnZXQgaW50byB0aGUKIAlyZXN0b3JlCQkJCSEgd2luZG93IHRvIHJlc3RvcmUKLQlsZAlbJXNwICsgMF0sICVsMDsgCSEgUmVzdG9yZSB3aW5kb3cgZnJvbSB0aGUgc3RhY2sKKwlsZAlbJXNwICsgMF0sICVsMDsJCSEgUmVzdG9yZSB3aW5kb3cgZnJvbSB0aGUgc3RhY2sKIAlsZAlbJXNwICsgNF0sICVsMTsKIAlsZAlbJXNwICsgOF0sICVsMjsKIAlsZAlbJXNwICsgMTJdLCAlbDM7CkBAIC01NDcsNyArNTQ3LDcgQEAKIAl0YSAwCiAJbm9wCiAJbm9wCi0JYiBfaHdlcnIgCQkJISBsb29wIGluZmluaXRlCisJYiBfaHdlcnIJCQkhIGxvb3AgaW5maW5pdGUKIAlub3AKIAogLyogUmVnaXN0ZXJzIHRvIG5vdCB0b3VjaCBhdCBhbGwuICovCmRpZmYgLS1naXQgYS9jcHUvbGVvbjMvc3RhcnQuUyBiL2NwdS9sZW9uMy9zdGFydC5TCmluZGV4IDJmMWQwOTkuLmQ0MjE4OTggMTAwNjQ0Ci0tLSBhL2NwdS9sZW9uMy9zdGFydC5TCisrKyBiL2NwdS9sZW9uMy9zdGFydC5TCkBAIC0zMSwxMCArMzEsMTAgQEAKIAogLyogRW50cnkgZm9yIHRyYXBzIHdoaWNoIGp1bXAgdG8gYSBwcm9ncmFtbWVyLXNwZWNpZmllZCB0cmFwIGhhbmRsZXIuICAqLwogI2RlZmluZSBUUkFQUihIKSAgXAotCXdyIAklZzAsIDB4ZmUwLCAlcHNyOyBcCi0JbW92IAklZzAsICV0YnI7IFwKLQliYSAJKEgpOyBcCi0JbW92IAklZzAsICV3aW07CisJd3IJJWcwLCAweGZlMCwgJXBzcjsgXAorCW1vdgklZzAsICV0YnI7IFwKKwliYQkoSCk7IFwKKwltb3YJJWcwLCAld2ltOwogCiAjZGVmaW5lIFRSQVAoSCkgXAogCW1vdgklcHNyLCAlbDA7IFwKQEAgLTQyLDEwICs0MiwxMCBAQAogCW5vcDsgbm9wOwogCiAjZGVmaW5lIFRSQVBJKGlsZXZlbCkgXAotCW1vdiAJaWxldmVsLCAlbDc7IFwKLQltb3YgCSVwc3IsICVsMDsgXAotCWIgCV9pcnFfZW50cnk7IFwKLQltb3YgCSV3aW0sICVsMworCW1vdglpbGV2ZWwsICVsNzsgXAorCW1vdgklcHNyLCAlbDA7IFwKKwliCV9pcnFfZW50cnk7IFwKKwltb3YJJXdpbSwgJWwzCiAKIC8qIFVuZXhjcGVjdGVkIHRyYXAgd2lsbCBoYWx0IHRoZSBwcm9jZXNzb3IgYnkgZm9yY2luZyBpdCB0byBlcnJvciBzdGF0ZSAqLwogI3VuZGVmIEJBRF9UUkFQCkBAIC03Niw3ICs3Niw3IEBACiAjZGVmaW5lIFNBKFgpCSgoKFgpKyhTVEFDS19BTElHTi0xKSkgJiB+KFNUQUNLX0FMSUdOLTEpKQogCiAJLnNlY3Rpb24gIi5zdGFydCIsICJheCIKLQkuZ2xvYmwgCV9zdGFydCwgc3RhcnQsIF90cmFwX3RhYmxlCisJLmdsb2JsCV9zdGFydCwgc3RhcnQsIF90cmFwX3RhYmxlCiAJLmdsb2JsICBfaXJxX2VudHJ5LCBubWlfdHJhcAogCS5nbG9ibCAgX3Jlc2V0X3JlbG9jCiAKQEAgLTExOCw3ICsxMTgsNyBAQAogCVRSQVBJKDEzKTsJCQkhIDFkIElSUSBsZXZlbCAxMwogCVRSQVBJKDE0KTsJCQkhIDFlIElSUSBsZXZlbCAxNAogCVRSQVAoX25taV90cmFwKTsJCSEgMWYgSVJRIGxldmVsIDE1IC8KLQkgICAgICAgICAgICAgICAgCQkhIE5NSSAobm9uIG1hc2thYmxlIGludGVycnVwdCkKKwkJCQkJISBOTUkgKG5vbiBtYXNrYWJsZSBpbnRlcnJ1cHQpCiAJQkFEX1RSQVA7CQkJISAyMCByX3JlZ2lzdGVyX2FjY2Vzc19lcnJvcgogCUJBRF9UUkFQOwkJCSEgMjEgaW5zdHJ1Y3Rpb24gYWNjZXNzIGVycm9yCiAJQkFEX1RSQVA7CQkJISAyMgpAQCAtNDcwLDcgKzQ3MCw3IEBACiAJbm9wOyBub3A7IG5vcAogCXJlc3RvcmUJCQkJISBUd28gcmVzdG9yZXMgdG8gZ2V0IGludG8gdGhlCiAJcmVzdG9yZQkJCQkhIHdpbmRvdyB0byByZXN0b3JlCi0JbGQJWyVzcCArIDBdLCAlbDA7IAkhIFJlc3RvcmUgd2luZG93IGZyb20gdGhlIHN0YWNrCisJbGQJWyVzcCArIDBdLCAlbDA7CQkhIFJlc3RvcmUgd2luZG93IGZyb20gdGhlIHN0YWNrCiAJbGQJWyVzcCArIDRdLCAlbDE7CiAJbGQJWyVzcCArIDhdLCAlbDI7CiAJbGQJWyVzcCArIDEyXSwgJWwzOwpAQCAtNTAyLDcgKzUwMiw3IEBACiAJdGEgMAogCW5vcAogCW5vcAotCWIgX2h3ZXJyIAkJCSEgbG9vcCBpbmZpbml0ZQorCWIgX2h3ZXJyCQkJISBsb29wIGluZmluaXRlCiAJbm9wCiAKIC8qIFJlZ2lzdGVycyB0byBub3QgdG91Y2ggYXQgYWxsLiAqLwpkaWZmIC0tZ2l0IGEvY3B1L2xoN2E0MHgvc3RhcnQuUyBiL2NwdS9saDdhNDB4L3N0YXJ0LlMKaW5kZXggZmI3NDhjZi4uZTQ2NTVkNiAxMDA2NDQKLS0tIGEvY3B1L2xoN2E0MHgvc3RhcnQuUworKysgYi9jcHUvbGg3YTQweC9zdGFydC5TCkBAIC0xODQsNyArMTg0LDcgQEAKIAlAYWRkCXIwLCByMCwgIzQJCS8qIHN0YXJ0IGF0IGZpcnN0IGJ5dGUgb2YgYnNzICAgICAgICovCiAJCQkJCS8qICAgd2h5IGluYy4gNCBieXRlcyBwYXN0IHRoZW4/ICAgICovCiAJbGRyCXIxLCBfYnNzX2VuZAkJLyogc3RvcCBoZXJlICAgICAgICAgICAgICAgICAgICAgICAgKi8KLQltb3YgCXIyLCAjMHgwMDAwMDAwMAkJLyogY2xlYXIgICAgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKwltb3YJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLwogCiBjbGJzc19sOnN0cglyMiwgW3IwXQkJLyogY2xlYXIgbG9vcC4uLiAgICAgICAgICAgICAgICAgICAgKi8KIAlhZGQJcjAsIHIwLCAjNApAQCAtMzQ3LDMxICszNDcsMzEgQEAKIHVuZGVmaW5lZF9pbnN0cnVjdGlvbjoKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX3VuZGVmaW5lZF9pbnN0cnVjdGlvbgorCWJsCWRvX3VuZGVmaW5lZF9pbnN0cnVjdGlvbgogCiAJLmFsaWduCTUKIHNvZnR3YXJlX2ludGVycnVwdDoKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX3NvZnR3YXJlX2ludGVycnVwdAorCWJsCWRvX3NvZnR3YXJlX2ludGVycnVwdAogCiAJLmFsaWduCTUKIHByZWZldGNoX2Fib3J0OgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fcHJlZmV0Y2hfYWJvcnQKKwlibAlkb19wcmVmZXRjaF9hYm9ydAogCiAJLmFsaWduCTUKIGRhdGFfYWJvcnQ6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19kYXRhX2Fib3J0CisJYmwJZG9fZGF0YV9hYm9ydAogCiAJLmFsaWduCTUKIG5vdF91c2VkOgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fbm90X3VzZWQKKwlibAlkb19ub3RfdXNlZAogCiAjaWZkZWYgQ09ORklHX1VTRV9JUlEKIApAQCAtMzc5LDcgKzM3OSw3IEBACiBpcnE6CiAJZ2V0X2lycV9zdGFjawogCWlycV9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19pcnEKKwlibAlkb19pcnEKIAlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKIAogCS5hbGlnbgk1CkBAIC0zODcsNyArMzg3LDcgQEAKIAlnZXRfZmlxX3N0YWNrCiAJLyogc29tZW9uZSBvdWdodCB0byB3cml0ZSBhIG1vcmUgZWZmaWN0aW9uIGZpcV9zYXZlX3VzZXJfcmVncyAqLwogCWlycV9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19maXEKKwlibAlkb19maXEKIAlpcnFfcmVzdG9yZV91c2VyX3JlZ3MKIAogI2Vsc2UKQEAgLTM5NiwxMyArMzk2LDEzIEBACiBpcnE6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19pcnEKKwlibAlkb19pcnEKIAogCS5hbGlnbgk1CiBmaXE6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19maXEKKwlibAlkb19maXEKIAogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2NwdS9tY2Y1MjN4L3N0YXJ0LlMgYi9jcHUvbWNmNTIzeC9zdGFydC5TCmluZGV4IGFkMDRjMDkuLjJiNjM4ZGYgMTAwNjQ0Ci0tLSBhL2NwdS9tY2Y1MjN4L3N0YXJ0LlMKKysrIGIvY3B1L21jZjUyM3gvc3RhcnQuUwpAQCAtNDksNyArNDksNyBAQAogX3ZlY3RvcnM6CiAKIElOSVRTUDoJCS5sb25nCTB4MDAwMDAwMDAJLyogSW5pdGlhbCBTUAkqLwotSU5JVFBDOgkJLmxvbmcJX1NUQVJUCS8qIEluaXRpYWwgUEMgCQkqLworSU5JVFBDOgkJLmxvbmcJX1NUQVJUCS8qIEluaXRpYWwgUEMJCSovCiB2ZWN0b3IwMjoJLmxvbmcJX0ZBVUxUCS8qIEFjY2VzcyBFcnJvcgkJKi8KIHZlY3RvcjAzOgkubG9uZwlfRkFVTFQJLyogQWRkcmVzcyBFcnJvcgkqLwogdmVjdG9yMDQ6CS5sb25nCV9GQVVMVAkvKiBJbGxlZ2FsIEluc3RydWN0aW9uCSovCmRpZmYgLS1naXQgYS9jcHUvbWNmNTJ4Mi9zdGFydC5TIGIvY3B1L21jZjUyeDIvc3RhcnQuUwppbmRleCAyYmMwZGYzLi5hMDU0OTA0IDEwMDY0NAotLS0gYS9jcHUvbWNmNTJ4Mi9zdGFydC5TCisrKyBiL2NwdS9tY2Y1MngyL3N0YXJ0LlMKQEAgLTI0OCwxNCArMjQ4LDE0IEBACiAgKiBXZSBhcmUgZG9uZS4gRG8gbm90IHJldHVybiwgaW5zdGVhZCBicmFuY2ggdG8gc2Vjb25kIHBhcnQgb2YgYm9hcmQKICAqIGluaXRpYWxpemF0aW9uLCBub3cgcnVubmluZyBmcm9tIFJBTS4KICAqLwotIAltb3ZlLmwJJWEwLCAlYTEKKwltb3ZlLmwJJWEwLCAlYTEKIAlhZGQubAkjKGluX3JhbSAtIENGR19NT05JVE9SX0JBU0UpLCAlYTEKIAlqbXAJKCVhMSkKIAogaW5fcmFtOgogCiBjbGVhcl9ic3M6Ci0gCS8qCisJLyoKIAkgKiBOb3cgY2xlYXIgQlNTIHNlZ21lbnQKIAkgKi8KIAltb3ZlLmwJJWEwLCAlYTEKQEAgLTQxNiw3ICs0MTYsNyBAQAogCSAqICBOb3RlOiBUaGUgNTI0OSBEb2N1bWVudGF0aW9uIGRvZXNuJ3QgZ2l2ZSBhIGJpdCBwb3NpdGlvbiBmb3IgQ0lOViEKIAkgKiAgRnJvbSB0aGUgNTI3MiBhbmQgdGhlIDUzMDcgZG9jdW1lbnRhdGlvbiwgSSBoYXZlIGRlZHVjZWQgdGhhdCBpdCBpcwogCSAqICBwcm9iYWJseSBDQUNSWzI0XS4gU2hvdWxkIHNvbWVvbmUgc2F5IHNvbWV0aGluZyB0byBNb3Rvcm9sYT8KLQkgKiAgCX5KZXJlbXkKKwkgKgl+SmVyZW15CiAJICovCiAJbW92ZS5sCSMweDAxMDAwMDAwLCAlZDAJCS8qIEludmFsaWRhdGUgd2hvbGUgY2FjaGUgKi8KIAltb3ZlLmMJJWQwLCVDQUNSCmRpZmYgLS1naXQgYS9jcHUvbWNmNTMyeC9zdGFydC5TIGIvY3B1L21jZjUzMngvc3RhcnQuUwppbmRleCBhNTI0ZjcwLi5jODA2ZjdhIDEwMDY0NAotLS0gYS9jcHUvbWNmNTMyeC9zdGFydC5TCisrKyBiL2NwdS9tY2Y1MzJ4L3N0YXJ0LlMKQEAgLTQ5LDcgKzQ5LDcgQEAKIF92ZWN0b3JzOgogCiBJTklUU1A6CQkubG9uZwkweDAwMDAwMDAwCS8qIEluaXRpYWwgU1AJKi8KLUlOSVRQQzoJCS5sb25nCV9TVEFSVAkvKiBJbml0aWFsIFBDIAkJKi8KK0lOSVRQQzoJCS5sb25nCV9TVEFSVAkvKiBJbml0aWFsIFBDCQkqLwogdmVjdG9yMDI6CS5sb25nCV9GQVVMVAkvKiBBY2Nlc3MgRXJyb3IJCSovCiB2ZWN0b3IwMzoJLmxvbmcJX0ZBVUxUCS8qIEFkZHJlc3MgRXJyb3IJKi8KIHZlY3RvcjA0OgkubG9uZwlfRkFVTFQJLyogSWxsZWdhbCBJbnN0cnVjdGlvbgkqLwpkaWZmIC0tZ2l0IGEvY3B1L21jZjU0NDV4L3N0YXJ0LlMgYi9jcHUvbWNmNTQ0NXgvc3RhcnQuUwppbmRleCAwYzUxOTRhLi4zMjQxYjI3IDEwMDY0NAotLS0gYS9jcHUvbWNmNTQ0NXgvc3RhcnQuUworKysgYi9jcHUvbWNmNTQ0NXgvc3RhcnQuUwpAQCAtNTQsNyArNTQsNyBAQAogX3ZlY3RvcnM6CiAKIElOSVRTUDoJCS5sb25nCTB4MDAwMDAwMDAJLyogSW5pdGlhbCBTUAkqLwotSU5JVFBDOgkJLmxvbmcJX1NUQVJUCS8qIEluaXRpYWwgUEMgCQkqLworSU5JVFBDOgkJLmxvbmcJX1NUQVJUCS8qIEluaXRpYWwgUEMJCSovCiB2ZWN0b3IwMjoJLmxvbmcJX0ZBVUxUCS8qIEFjY2VzcyBFcnJvcgkJKi8KIHZlY3RvcjAzOgkubG9uZwlfRkFVTFQJLyogQWRkcmVzcyBFcnJvcgkqLwogdmVjdG9yMDQ6CS5sb25nCV9GQVVMVAkvKiBJbGxlZ2FsIEluc3RydWN0aW9uCSovCmRpZmYgLS1naXQgYS9jcHUvbWNmNTQ3eF84eC9zdGFydC5TIGIvY3B1L21jZjU0N3hfOHgvc3RhcnQuUwppbmRleCBjMTJkN2EwLi44Yjg3MDhkIDEwMDY0NAotLS0gYS9jcHUvbWNmNTQ3eF84eC9zdGFydC5TCisrKyBiL2NwdS9tY2Y1NDd4Xzh4L3N0YXJ0LlMKQEAgLTU0LDcgKzU0LDcgQEAKIF92ZWN0b3JzOgogCiBJTklUU1A6CQkubG9uZwkweDAwMDAwMDAwCS8qIEluaXRpYWwgU1AJKi8KLUlOSVRQQzoJCS5sb25nCV9TVEFSVAkvKiBJbml0aWFsIFBDIAkJKi8KK0lOSVRQQzoJCS5sb25nCV9TVEFSVAkvKiBJbml0aWFsIFBDCQkqLwogdmVjdG9yMDI6CS5sb25nCV9GQVVMVAkvKiBBY2Nlc3MgRXJyb3IJCSovCiB2ZWN0b3IwMzoJLmxvbmcJX0ZBVUxUCS8qIEFkZHJlc3MgRXJyb3IJKi8KIHZlY3RvcjA0OgkubG9uZwlfRkFVTFQJLyogSWxsZWdhbCBJbnN0cnVjdGlvbgkqLwpkaWZmIC0tZ2l0IGEvY3B1L21pcHMvYXNjX3NlcmlhbC5jIGIvY3B1L21pcHMvYXNjX3NlcmlhbC5jCmluZGV4IGQ5NWVjM2YuLjM0OThiNjEgMTAwNjQ0Ci0tLSBhL2NwdS9taXBzL2FzY19zZXJpYWwuYworKysgYi9jcHUvbWlwcy9hc2Nfc2VyaWFsLmMKQEAgLTM0LDEwICszNCwxMCBAQAogCiAvKiBJbnRlcnJ1cHQgc3RhdHVzIHJlZ2lzdGVyIGJpdHMgKi8KICNkZWZpbmUgRkJTX0lTUl9BVAkweDAwMDAwMDQwCS8qIEFTQyB0cmFuc21pdCBpbnRlcnJ1cHQgKi8KLSNkZWZpbmUgRkJTX0lTUl9BUiAJMHgwMDAwMDAyMAkvKiBBU0MgcmVjZWl2ZSBpbnRlcnJ1cHQgKi8KKyNkZWZpbmUgRkJTX0lTUl9BUgkweDAwMDAwMDIwCS8qIEFTQyByZWNlaXZlIGludGVycnVwdCAqLwogI2RlZmluZSBGQlNfSVNSX0FFCTB4MDAwMDAwMTAJLyogQVNDIGVycm9yIGludGVycnVwdCAqLwogI2RlZmluZSBGQlNfSVNSX0FCCTB4MDAwMDAwMDgJLyogQVNDIHRyYW5zbWl0IGJ1ZmZlciBpbnRlcnJ1cHQgKi8KLSNkZWZpbmUgRkJTX0lTUl9BUyAgICAgIDB4MDAwMDAwMDQgCS8qIEFTQyBzdGFydCBvZiBhdXRvYmF1ZCBkZXRlY3Rpb24gaW50ZXJydXB0ICovCisjZGVmaW5lIEZCU19JU1JfQVMgICAgICAweDAwMDAwMDA0CS8qIEFTQyBzdGFydCBvZiBhdXRvYmF1ZCBkZXRlY3Rpb24gaW50ZXJydXB0ICovCiAjZGVmaW5lIEZCU19JU1JfQUYJMHgwMDAwMDAwMgkvKiBBU0MgZW5kIG9mIGF1dG9iYXVkIGRldGVjdGlvbiBpbnRlcnJ1cHQgKi8KIAogI2Vsc2UKZGlmZiAtLWdpdCBhL2NwdS9taXBzL2F1MXgwMF91c2Jfb2hjaS5oIGIvY3B1L21pcHMvYXUxeDAwX3VzYl9vaGNpLmgKaW5kZXggNGVmMDZmZi4uYTYwNmQ0NSAxMDA2NDQKLS0tIGEvY3B1L21pcHMvYXUxeDAwX3VzYl9vaGNpLmgKKysrIGIvY3B1L21pcHMvYXUxeDAwX3VzYl9vaGNpLmgKQEAgLTExLDMxICsxMSwzMSBAQAogc3RhdGljIGludCBjY190b19lcnJvclsxNl0gPSB7CiAKIC8qIG1hcHBpbmcgb2YgdGhlIE9IQ0kgQ0Mgc3RhdHVzIHRvIGVycm9yIGNvZGVzICovCi0JLyogTm8gIEVycm9yICAqLyAgICAgICAgICAgICAgIDAsCi0JLyogQ1JDIEVycm9yICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9DUkNfRVJSLAotCS8qIEJpdCBTdHVmZiAgKi8gICAgICAgICAgICAgICBVU0JfU1RfQklUX0VSUiwKLQkvKiBEYXRhIFRvZ2cgICovICAgICAgICAgICAgICAgVVNCX1NUX0NSQ19FUlIsCi0JLyogU3RhbGwgICAgICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9TVEFMTEVELAotCS8qIERldk5vdFJlc3AgKi8gICAgICAgICAgICAgICAtMSwKLQkvKiBQSURDaGVjayAgICovICAgICAgICAgICAgICAgVVNCX1NUX0JJVF9FUlIsCi0JLyogVW5FeHBQSUQgICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9CSVRfRVJSLAotCS8qIERhdGFPdmVyICAgKi8gICAgICAgICAgICAgICBVU0JfU1RfQlVGX0VSUiwKLQkvKiBEYXRhVW5kZXIgICovICAgICAgICAgICAgICAgVVNCX1NUX0JVRl9FUlIsCi0JLyogcmVzZXJ2ZCAgICAqLyAgICAgICAgICAgICAgIC0xLAotCS8qIHJlc2VydmQgICAgKi8gICAgICAgICAgICAgICAtMSwKLQkvKiBCdWZmZXJPdmVyICovICAgICAgICAgICAgICAgVVNCX1NUX0JVRl9FUlIsCi0JLyogQnVmZlVuZGVyICAqLyAgICAgICAgICAgICAgIFVTQl9TVF9CVUZfRVJSLAotCS8qIE5vdCBBY2Nlc3MgKi8gICAgICAgICAgICAgICAtMSwKLQkvKiBOb3QgQWNjZXNzICovICAgICAgICAgICAgICAgLTEKKwkvKiBObyAgRXJyb3IgICovCTAsCisJLyogQ1JDIEVycm9yICAqLwlVU0JfU1RfQ1JDX0VSUiwKKwkvKiBCaXQgU3R1ZmYgICovCVVTQl9TVF9CSVRfRVJSLAorCS8qIERhdGEgVG9nZyAgKi8JVVNCX1NUX0NSQ19FUlIsCisJLyogU3RhbGwgICAgICAqLwlVU0JfU1RfU1RBTExFRCwKKwkvKiBEZXZOb3RSZXNwICovCS0xLAorCS8qIFBJRENoZWNrICAgKi8JVVNCX1NUX0JJVF9FUlIsCisJLyogVW5FeHBQSUQgICAqLwlVU0JfU1RfQklUX0VSUiwKKwkvKiBEYXRhT3ZlciAgICovCVVTQl9TVF9CVUZfRVJSLAorCS8qIERhdGFVbmRlciAgKi8JVVNCX1NUX0JVRl9FUlIsCisJLyogcmVzZXJ2ZCAgICAqLwktMSwKKwkvKiByZXNlcnZkICAgICovCS0xLAorCS8qIEJ1ZmZlck92ZXIgKi8JVVNCX1NUX0JVRl9FUlIsCisJLyogQnVmZlVuZGVyICAqLwlVU0JfU1RfQlVGX0VSUiwKKwkvKiBOb3QgQWNjZXNzICovCS0xLAorCS8qIE5vdCBBY2Nlc3MgKi8JLTEKIH07CiAKIC8qIEVEIFN0YXRlcyAqLwogCi0jZGVmaW5lIEVEX05FVyAJCTB4MDAKLSNkZWZpbmUgRURfVU5MSU5LIAkweDAxCisjZGVmaW5lIEVEX05FVwkJMHgwMAorI2RlZmluZSBFRF9VTkxJTksJMHgwMQogI2RlZmluZSBFRF9PUEVSCQkweDAyCiAjZGVmaW5lIEVEX0RFTAkJMHgwNAotI2RlZmluZSBFRF9VUkJfREVMICAJMHgwOAorI2RlZmluZSBFRF9VUkJfREVMCTB4MDgKIAogLyogdXNiX29oY2lfZWQgKi8KIHN0cnVjdCBlZCB7CkBAIC02MSw1NCArNjEsNTQgQEAKIAogCiAvKiBURCBpbmZvIGZpZWxkICovCi0jZGVmaW5lIFREX0NDICAgICAgIDB4ZjAwMDAwMDAKLSNkZWZpbmUgVERfQ0NfR0VUKHRkX3ApICgodGRfcCA+PjI4KSAmIDB4MGYpCi0jZGVmaW5lIFREX0NDX1NFVCh0ZF9wLCBjYykgKHRkX3ApID0gKCh0ZF9wKSAmIDB4MGZmZmZmZmYpIHwgKCgoY2MpICYgMHgwZikgPDwgMjgpCi0jZGVmaW5lIFREX0VDICAgICAgIDB4MEMwMDAwMDAKLSNkZWZpbmUgVERfVCAgICAgICAgMHgwMzAwMDAwMAotI2RlZmluZSBURF9UX0RBVEEwICAweDAyMDAwMDAwCi0jZGVmaW5lIFREX1RfREFUQTEgIDB4MDMwMDAwMDAKLSNkZWZpbmUgVERfVF9UT0dHTEUgMHgwMDAwMDAwMAotI2RlZmluZSBURF9SICAgICAgICAweDAwMDQwMDAwCi0jZGVmaW5lIFREX0RJICAgICAgIDB4MDBFMDAwMDAKLSNkZWZpbmUgVERfRElfU0VUKFgpICgoKFgpICYgMHgwNyk8PCAyMSkKLSNkZWZpbmUgVERfRFAgICAgICAgMHgwMDE4MDAwMAotI2RlZmluZSBURF9EUF9TRVRVUCAweDAwMDAwMDAwCi0jZGVmaW5lIFREX0RQX0lOICAgIDB4MDAxMDAwMDAKLSNkZWZpbmUgVERfRFBfT1VUICAgMHgwMDA4MDAwMAorI2RlZmluZSBURF9DQwkJCTB4ZjAwMDAwMDAKKyNkZWZpbmUgVERfQ0NfR0VUKHRkX3ApCQkoKHRkX3AgPj4yOCkgJiAweDBmKQorI2RlZmluZSBURF9DQ19TRVQodGRfcCwgY2MpCSh0ZF9wKSA9ICgodGRfcCkgJiAweDBmZmZmZmZmKSB8ICgoKGNjKSAmIDB4MGYpIDw8IDI4KQorI2RlZmluZSBURF9FQwkJCTB4MEMwMDAwMDAKKyNkZWZpbmUgVERfVAkJCTB4MDMwMDAwMDAKKyNkZWZpbmUgVERfVF9EQVRBMAkJMHgwMjAwMDAwMAorI2RlZmluZSBURF9UX0RBVEExCQkweDAzMDAwMDAwCisjZGVmaW5lIFREX1RfVE9HR0xFCQkweDAwMDAwMDAwCisjZGVmaW5lIFREX1IJCQkweDAwMDQwMDAwCisjZGVmaW5lIFREX0RJCQkJMHgwMEUwMDAwMAorI2RlZmluZSBURF9ESV9TRVQoWCkJCSgoKFgpICYgMHgwNyk8PCAyMSkKKyNkZWZpbmUgVERfRFAJCQkweDAwMTgwMDAwCisjZGVmaW5lIFREX0RQX1NFVFVQCQkweDAwMDAwMDAwCisjZGVmaW5lIFREX0RQX0lOCQkweDAwMTAwMDAwCisjZGVmaW5lIFREX0RQX09VVAkJMHgwMDA4MDAwMAogCi0jZGVmaW5lIFREX0lTTwkgICAgMHgwMDAxMDAwMAotI2RlZmluZSBURF9ERUwgICAgICAweDAwMDIwMDAwCisjZGVmaW5lIFREX0lTTwkJCTB4MDAwMTAwMDAKKyNkZWZpbmUgVERfREVMCQkJMHgwMDAyMDAwMAogCiAvKiBDQyBDb2RlcyAqLwotI2RlZmluZSBURF9DQ19OT0VSUk9SICAgICAgMHgwMAotI2RlZmluZSBURF9DQ19DUkMgICAgICAgICAgMHgwMQotI2RlZmluZSBURF9DQ19CSVRTVFVGRklORyAgMHgwMgotI2RlZmluZSBURF9DQ19EQVRBVE9HR0xFTSAgMHgwMwotI2RlZmluZSBURF9DQ19TVEFMTCAgICAgICAgMHgwNAotI2RlZmluZSBURF9ERVZOT1RSRVNQICAgICAgMHgwNQotI2RlZmluZSBURF9QSURDSEVDS0ZBSUwgICAgMHgwNgotI2RlZmluZSBURF9VTkVYUEVDVEVEUElEICAgMHgwNwotI2RlZmluZSBURF9EQVRBT1ZFUlJVTiAgICAgMHgwOAotI2RlZmluZSBURF9EQVRBVU5ERVJSVU4gICAgMHgwOQotI2RlZmluZSBURF9CVUZGRVJPVkVSUlVOICAgMHgwQwotI2RlZmluZSBURF9CVUZGRVJVTkRFUlJVTiAgMHgwRAotI2RlZmluZSBURF9OT1RBQ0NFU1NFRCAgICAgMHgwRgorI2RlZmluZSBURF9DQ19OT0VSUk9SCQkweDAwCisjZGVmaW5lIFREX0NDX0NSQwkJMHgwMQorI2RlZmluZSBURF9DQ19CSVRTVFVGRklORwkweDAyCisjZGVmaW5lIFREX0NDX0RBVEFUT0dHTEVNCTB4MDMKKyNkZWZpbmUgVERfQ0NfU1RBTEwJCTB4MDQKKyNkZWZpbmUgVERfREVWTk9UUkVTUAkJMHgwNQorI2RlZmluZSBURF9QSURDSEVDS0ZBSUwJMHgwNgorI2RlZmluZSBURF9VTkVYUEVDVEVEUElECTB4MDcKKyNkZWZpbmUgVERfREFUQU9WRVJSVU4JCTB4MDgKKyNkZWZpbmUgVERfREFUQVVOREVSUlVOCTB4MDkKKyNkZWZpbmUgVERfQlVGRkVST1ZFUlJVTgkweDBDCisjZGVmaW5lIFREX0JVRkZFUlVOREVSUlVOCTB4MEQKKyNkZWZpbmUgVERfTk9UQUNDRVNTRUQJCTB4MEYKIAogCiAjZGVmaW5lIE1BWFBTVyAxCiAKIHN0cnVjdCB0ZCB7CiAJX191MzIgaHdJTkZPOwotICAJX191MzIgaHdDQlA7CQkvKiBDdXJyZW50IEJ1ZmZlciBQb2ludGVyICovCi0gIAlfX3UzMiBod05leHRURDsJCS8qIE5leHQgVEQgUG9pbnRlciAqLwotICAJX191MzIgaHdCRTsJCS8qIE1lbW9yeSBCdWZmZXIgRW5kIFBvaW50ZXIgKi8KKwlfX3UzMiBod0NCUDsJCS8qIEN1cnJlbnQgQnVmZmVyIFBvaW50ZXIgKi8KKwlfX3UzMiBod05leHRURDsJCS8qIE5leHQgVEQgUG9pbnRlciAqLworCV9fdTMyIGh3QkU7CQkvKiBNZW1vcnkgQnVmZmVyIEVuZCBQb2ludGVyICovCiAKLSAgCV9fdTE2IGh3UFNXW01BWFBTV107Ci0gIAlfX3U4IHVudXNlZDsKLSAgCV9fdTggaW5kZXg7Ci0gIAlzdHJ1Y3QgZWQgKmVkOwotICAJc3RydWN0IHRkICpuZXh0X2RsX3RkOworCV9fdTE2IGh3UFNXW01BWFBTV107CisJX191OCB1bnVzZWQ7CisJX191OCBpbmRleDsKKwlzdHJ1Y3QgZWQgKmVkOworCXN0cnVjdCB0ZCAqbmV4dF9kbF90ZDsKIAlzdHJ1Y3QgdXNiX2RldmljZSAqdXNiX2RldjsKIAlpbnQgdHJhbnNmZXJfbGVuOwogCV9fdTMyIGRhdGE7CkBAIC0xNDIsNyArMTQyLDcgQEAKIAogLyoKICAqIFRoaXMgaXMgdGhlIHN0cnVjdHVyZSBvZiB0aGUgT0hDSSBjb250cm9sbGVyJ3MgbWVtb3J5IG1hcHBlZCBJL08KLSAqIHJlZ2lvbi4gIFRoaXMgaXMgTWVtb3J5IE1hcHBlZCBJL08uICBZb3UgbXVzdCB1c2UgdGhlIHJlYWRsKCkgYW5kCisgKiByZWdpb24uICBUaGlzIGlzIE1lbW9yeSBNYXBwZWQgSS9PLglZb3UgbXVzdCB1c2UgdGhlIHJlYWRsKCkgYW5kCiAgKiB3cml0ZWwoKSBtYWNyb3MgZGVmaW5lZCBpbiBhc20vaW8uaCB0byBhY2Nlc3MgdGhlc2UhIQogICovCiBzdHJ1Y3Qgb2hjaV9yZWdzIHsKQEAgLTIwMiwxMCArMjAyLDEwIEBACiAgKiBIY0NvbW1hbmRTdGF0dXMgKGNtZHN0YXR1cykgcmVnaXN0ZXIgbWFza3MKICAqLwogI2RlZmluZSBPSENJX0hDUgkoMSA8PCAwKQkvKiBob3N0IGNvbnRyb2xsZXIgcmVzZXQgKi8KLSNkZWZpbmUgT0hDSV9DTEYgIAkoMSA8PCAxKQkvKiBjb250cm9sIGxpc3QgZmlsbGVkICovCi0jZGVmaW5lIE9IQ0lfQkxGICAJKDEgPDwgMikJLyogYnVsayBsaXN0IGZpbGxlZCAqLwotI2RlZmluZSBPSENJX09DUiAgCSgxIDw8IDMpCS8qIG93bmVyc2hpcCBjaGFuZ2UgcmVxdWVzdCAqLwotI2RlZmluZSBPSENJX1NPQyAgCSgzIDw8IDE2KQkvKiBzY2hlZHVsaW5nIG92ZXJydW4gY291bnQgKi8KKyNkZWZpbmUgT0hDSV9DTEYJKDEgPDwgMSkJLyogY29udHJvbCBsaXN0IGZpbGxlZCAqLworI2RlZmluZSBPSENJX0JMRgkoMSA8PCAyKQkvKiBidWxrIGxpc3QgZmlsbGVkICovCisjZGVmaW5lIE9IQ0lfT0NSCSgxIDw8IDMpCS8qIG93bmVyc2hpcCBjaGFuZ2UgcmVxdWVzdCAqLworI2RlZmluZSBPSENJX1NPQwkoMyA8PCAxNikJLyogc2NoZWR1bGluZyBvdmVycnVuIGNvdW50ICovCiAKIC8qCiAgKiBtYXNrcyB1c2VkIHdpdGggaW50ZXJydXB0IHJlZ2lzdGVyczoKQEAgLTIzNiwxMDEgKzIzNiwxMDEgQEAKIC8qIFVTQiBIVUIgQ09OU1RBTlRTIChub3QgT0hDSS1zcGVjaWZpYzsgc2VlIGh1Yi5oKSAqLwogCiAvKiBkZXN0aW5hdGlvbiBvZiByZXF1ZXN0ICovCi0jZGVmaW5lIFJIX0lOVEVSRkFDRSAgICAgICAgICAgICAgIDB4MDEKLSNkZWZpbmUgUkhfRU5EUE9JTlQgICAgICAgICAgICAgICAgMHgwMgotI2RlZmluZSBSSF9PVEhFUiAgICAgICAgICAgICAgICAgICAweDAzCisjZGVmaW5lIFJIX0lOVEVSRkFDRQkJMHgwMQorI2RlZmluZSBSSF9FTkRQT0lOVAkJMHgwMgorI2RlZmluZSBSSF9PVEhFUgkJMHgwMwogCi0jZGVmaW5lIFJIX0NMQVNTICAgICAgICAgICAgICAgICAgIDB4MjAKLSNkZWZpbmUgUkhfVkVORE9SICAgICAgICAgICAgICAgICAgMHg0MAorI2RlZmluZSBSSF9DTEFTUwkJMHgyMAorI2RlZmluZSBSSF9WRU5ET1IJCTB4NDAKIAogLyogUmVxdWVzdHM6IGJSZXF1ZXN0IDw8IDggfCBibVJlcXVlc3RUeXBlICovCi0jZGVmaW5lIFJIX0dFVF9TVEFUVVMgICAgICAgICAgIDB4MDA4MAotI2RlZmluZSBSSF9DTEVBUl9GRUFUVVJFICAgICAgICAweDAxMDAKLSNkZWZpbmUgUkhfU0VUX0ZFQVRVUkUgICAgICAgICAgMHgwMzAwCisjZGVmaW5lIFJIX0dFVF9TVEFUVVMJCTB4MDA4MAorI2RlZmluZSBSSF9DTEVBUl9GRUFUVVJFCTB4MDEwMAorI2RlZmluZSBSSF9TRVRfRkVBVFVSRQkJMHgwMzAwCiAjZGVmaW5lIFJIX1NFVF9BRERSRVNTCQkweDA1MDAKICNkZWZpbmUgUkhfR0VUX0RFU0NSSVBUT1IJMHgwNjgwCi0jZGVmaW5lIFJIX1NFVF9ERVNDUklQVE9SICAgICAgIDB4MDcwMAorI2RlZmluZSBSSF9TRVRfREVTQ1JJUFRPUgkweDA3MDAKICNkZWZpbmUgUkhfR0VUX0NPTkZJR1VSQVRJT04JMHgwODgwCiAjZGVmaW5lIFJIX1NFVF9DT05GSUdVUkFUSU9OCTB4MDkwMAotI2RlZmluZSBSSF9HRVRfU1RBVEUgICAgICAgICAgICAweDAyODAKLSNkZWZpbmUgUkhfR0VUX0lOVEVSRkFDRSAgICAgICAgMHgwQTgwCi0jZGVmaW5lIFJIX1NFVF9JTlRFUkZBQ0UgICAgICAgIDB4MEIwMAotI2RlZmluZSBSSF9TWU5DX0ZSQU1FICAgICAgICAgICAweDBDODAKKyNkZWZpbmUgUkhfR0VUX1NUQVRFCQkweDAyODAKKyNkZWZpbmUgUkhfR0VUX0lOVEVSRkFDRQkweDBBODAKKyNkZWZpbmUgUkhfU0VUX0lOVEVSRkFDRQkweDBCMDAKKyNkZWZpbmUgUkhfU1lOQ19GUkFNRQkJMHgwQzgwCiAvKiBPdXIgVmVuZG9yIFNwZWNpZmljIFJlcXVlc3QgKi8KLSNkZWZpbmUgUkhfU0VUX0VQICAgICAgICAgICAgICAgMHgyMDAwCisjZGVmaW5lIFJIX1NFVF9FUAkJMHgyMDAwCiAKIAogLyogSHViIHBvcnQgZmVhdHVyZXMgKi8KLSNkZWZpbmUgUkhfUE9SVF9DT05ORUNUSU9OICAgICAgICAgMHgwMAotI2RlZmluZSBSSF9QT1JUX0VOQUJMRSAgICAgICAgICAgICAweDAxCi0jZGVmaW5lIFJIX1BPUlRfU1VTUEVORCAgICAgICAgICAgIDB4MDIKLSNkZWZpbmUgUkhfUE9SVF9PVkVSX0NVUlJFTlQgICAgICAgMHgwMwotI2RlZmluZSBSSF9QT1JUX1JFU0VUICAgICAgICAgICAgICAweDA0Ci0jZGVmaW5lIFJIX1BPUlRfUE9XRVIgICAgICAgICAgICAgIDB4MDgKLSNkZWZpbmUgUkhfUE9SVF9MT1dfU1BFRUQgICAgICAgICAgMHgwOQorI2RlZmluZSBSSF9QT1JUX0NPTk5FQ1RJT04JMHgwMAorI2RlZmluZSBSSF9QT1JUX0VOQUJMRQkJMHgwMQorI2RlZmluZSBSSF9QT1JUX1NVU1BFTkQJCTB4MDIKKyNkZWZpbmUgUkhfUE9SVF9PVkVSX0NVUlJFTlQJMHgwMworI2RlZmluZSBSSF9QT1JUX1JFU0VUCQkweDA0CisjZGVmaW5lIFJIX1BPUlRfUE9XRVIJCTB4MDgKKyNkZWZpbmUgUkhfUE9SVF9MT1dfU1BFRUQJMHgwOQogCi0jZGVmaW5lIFJIX0NfUE9SVF9DT05ORUNUSU9OICAgICAgIDB4MTAKLSNkZWZpbmUgUkhfQ19QT1JUX0VOQUJMRSAgICAgICAgICAgMHgxMQotI2RlZmluZSBSSF9DX1BPUlRfU1VTUEVORCAgICAgICAgICAweDEyCi0jZGVmaW5lIFJIX0NfUE9SVF9PVkVSX0NVUlJFTlQgICAgIDB4MTMKLSNkZWZpbmUgUkhfQ19QT1JUX1JFU0VUICAgICAgICAgICAgMHgxNAorI2RlZmluZSBSSF9DX1BPUlRfQ09OTkVDVElPTgkweDEwCisjZGVmaW5lIFJIX0NfUE9SVF9FTkFCTEUJMHgxMQorI2RlZmluZSBSSF9DX1BPUlRfU1VTUEVORAkweDEyCisjZGVmaW5lIFJIX0NfUE9SVF9PVkVSX0NVUlJFTlQJMHgxMworI2RlZmluZSBSSF9DX1BPUlRfUkVTRVQJCTB4MTQKIAogLyogSHViIGZlYXR1cmVzICovCi0jZGVmaW5lIFJIX0NfSFVCX0xPQ0FMX1BPV0VSICAgICAgIDB4MDAKLSNkZWZpbmUgUkhfQ19IVUJfT1ZFUl9DVVJSRU5UICAgICAgMHgwMQorI2RlZmluZSBSSF9DX0hVQl9MT0NBTF9QT1dFUgkweDAwCisjZGVmaW5lIFJIX0NfSFVCX09WRVJfQ1VSUkVOVAkweDAxCiAKLSNkZWZpbmUgUkhfREVWSUNFX1JFTU9URV9XQUtFVVAgICAgMHgwMAotI2RlZmluZSBSSF9FTkRQT0lOVF9TVEFMTCAgICAgICAgICAweDAxCisjZGVmaW5lIFJIX0RFVklDRV9SRU1PVEVfV0FLRVVQIDB4MDAKKyNkZWZpbmUgUkhfRU5EUE9JTlRfU1RBTEwJMHgwMQogCi0jZGVmaW5lIFJIX0FDSyAgICAgICAgICAgICAgICAgICAgIDB4MDEKLSNkZWZpbmUgUkhfUkVRX0VSUiAgICAgICAgICAgICAgICAgLTEKLSNkZWZpbmUgUkhfTkFDSyAgICAgICAgICAgICAgICAgICAgMHgwMAorI2RlZmluZSBSSF9BQ0sJCQkweDAxCisjZGVmaW5lIFJIX1JFUV9FUlIJCS0xCisjZGVmaW5lIFJIX05BQ0sJCQkgICAweDAwCiAKIAogLyogT0hDSSBST09UIEhVQiBSRUdJU1RFUiBNQVNLUyAqLwogCiAvKiByb290aHViLnBvcnRzdGF0dXMgW2ldIGJpdHMgKi8KLSNkZWZpbmUgUkhfUFNfQ0NTICAgICAgICAgICAgMHgwMDAwMDAwMSAgIAkvKiBjdXJyZW50IGNvbm5lY3Qgc3RhdHVzICovCi0jZGVmaW5lIFJIX1BTX1BFUyAgICAgICAgICAgIDB4MDAwMDAwMDIgICAJLyogcG9ydCBlbmFibGUgc3RhdHVzKi8KLSNkZWZpbmUgUkhfUFNfUFNTICAgICAgICAgICAgMHgwMDAwMDAwNCAgIAkvKiBwb3J0IHN1c3BlbmQgc3RhdHVzICovCi0jZGVmaW5lIFJIX1BTX1BPQ0kgICAgICAgICAgIDB4MDAwMDAwMDggICAJLyogcG9ydCBvdmVyIGN1cnJlbnQgaW5kaWNhdG9yICovCi0jZGVmaW5lIFJIX1BTX1BSUyAgICAgICAgICAgIDB4MDAwMDAwMTAgIAkvKiBwb3J0IHJlc2V0IHN0YXR1cyAqLwotI2RlZmluZSBSSF9QU19QUFMgICAgICAgICAgICAweDAwMDAwMTAwICAgCS8qIHBvcnQgcG93ZXIgc3RhdHVzICovCi0jZGVmaW5lIFJIX1BTX0xTREEgICAgICAgICAgIDB4MDAwMDAyMDAgICAgCS8qIGxvdyBzcGVlZCBkZXZpY2UgYXR0YWNoZWQgKi8KLSNkZWZpbmUgUkhfUFNfQ1NDICAgICAgICAgICAgMHgwMDAxMDAwMCAJLyogY29ubmVjdCBzdGF0dXMgY2hhbmdlICovCi0jZGVmaW5lIFJIX1BTX1BFU0MgICAgICAgICAgIDB4MDAwMjAwMDAgICAJLyogcG9ydCBlbmFibGUgc3RhdHVzIGNoYW5nZSAqLwotI2RlZmluZSBSSF9QU19QU1NDICAgICAgICAgICAweDAwMDQwMDAwICAgIAkvKiBwb3J0IHN1c3BlbmQgc3RhdHVzIGNoYW5nZSAqLwotI2RlZmluZSBSSF9QU19PQ0lDICAgICAgICAgICAweDAwMDgwMDAwICAgIAkvKiBvdmVyIGN1cnJlbnQgaW5kaWNhdG9yIGNoYW5nZSAqLwotI2RlZmluZSBSSF9QU19QUlNDICAgICAgICAgICAweDAwMTAwMDAwICAgCS8qIHBvcnQgcmVzZXQgc3RhdHVzIGNoYW5nZSAqLworI2RlZmluZSBSSF9QU19DQ1MJCTB4MDAwMDAwMDEJLyogY3VycmVudCBjb25uZWN0IHN0YXR1cyAqLworI2RlZmluZSBSSF9QU19QRVMJCTB4MDAwMDAwMDIJLyogcG9ydCBlbmFibGUgc3RhdHVzKi8KKyNkZWZpbmUgUkhfUFNfUFNTCQkweDAwMDAwMDA0CS8qIHBvcnQgc3VzcGVuZCBzdGF0dXMgKi8KKyNkZWZpbmUgUkhfUFNfUE9DSQkJMHgwMDAwMDAwOAkvKiBwb3J0IG92ZXIgY3VycmVudCBpbmRpY2F0b3IgKi8KKyNkZWZpbmUgUkhfUFNfUFJTCQkweDAwMDAwMDEwCS8qIHBvcnQgcmVzZXQgc3RhdHVzICovCisjZGVmaW5lIFJIX1BTX1BQUwkJMHgwMDAwMDEwMAkvKiBwb3J0IHBvd2VyIHN0YXR1cyAqLworI2RlZmluZSBSSF9QU19MU0RBCQkweDAwMDAwMjAwCS8qIGxvdyBzcGVlZCBkZXZpY2UgYXR0YWNoZWQgKi8KKyNkZWZpbmUgUkhfUFNfQ1NDCQkweDAwMDEwMDAwCS8qIGNvbm5lY3Qgc3RhdHVzIGNoYW5nZSAqLworI2RlZmluZSBSSF9QU19QRVNDCQkweDAwMDIwMDAwCS8qIHBvcnQgZW5hYmxlIHN0YXR1cyBjaGFuZ2UgKi8KKyNkZWZpbmUgUkhfUFNfUFNTQwkJMHgwMDA0MDAwMAkvKiBwb3J0IHN1c3BlbmQgc3RhdHVzIGNoYW5nZSAqLworI2RlZmluZSBSSF9QU19PQ0lDCQkweDAwMDgwMDAwCS8qIG92ZXIgY3VycmVudCBpbmRpY2F0b3IgY2hhbmdlICovCisjZGVmaW5lIFJIX1BTX1BSU0MJCTB4MDAxMDAwMDAJLyogcG9ydCByZXNldCBzdGF0dXMgY2hhbmdlICovCiAKIC8qIHJvb3RodWIuc3RhdHVzIGJpdHMgKi8KLSNkZWZpbmUgUkhfSFNfTFBTCSAgICAgMHgwMDAwMDAwMQkJLyogbG9jYWwgcG93ZXIgc3RhdHVzICovCi0jZGVmaW5lIFJIX0hTX09DSQkgICAgIDB4MDAwMDAwMDIJCS8qIG92ZXIgY3VycmVudCBpbmRpY2F0b3IgKi8KLSNkZWZpbmUgUkhfSFNfRFJXRQkgICAgIDB4MDAwMDgwMDAJCS8qIGRldmljZSByZW1vdGUgd2FrZXVwIGVuYWJsZSAqLwotI2RlZmluZSBSSF9IU19MUFNDCSAgICAgMHgwMDAxMDAwMAkJLyogbG9jYWwgcG93ZXIgc3RhdHVzIGNoYW5nZSAqLwotI2RlZmluZSBSSF9IU19PQ0lDCSAgICAgMHgwMDAyMDAwMAkJLyogb3ZlciBjdXJyZW50IGluZGljYXRvciBjaGFuZ2UgKi8KLSNkZWZpbmUgUkhfSFNfQ1JXRQkgICAgIDB4ODAwMDAwMDAJCS8qIGNsZWFyIHJlbW90ZSB3YWtldXAgZW5hYmxlICovCisjZGVmaW5lIFJIX0hTX0xQUwkJMHgwMDAwMDAwMQkvKiBsb2NhbCBwb3dlciBzdGF0dXMgKi8KKyNkZWZpbmUgUkhfSFNfT0NJCQkweDAwMDAwMDAyCS8qIG92ZXIgY3VycmVudCBpbmRpY2F0b3IgKi8KKyNkZWZpbmUgUkhfSFNfRFJXRQkJMHgwMDAwODAwMAkvKiBkZXZpY2UgcmVtb3RlIHdha2V1cCBlbmFibGUgKi8KKyNkZWZpbmUgUkhfSFNfTFBTQwkJMHgwMDAxMDAwMAkvKiBsb2NhbCBwb3dlciBzdGF0dXMgY2hhbmdlICovCisjZGVmaW5lIFJIX0hTX09DSUMJCTB4MDAwMjAwMDAJLyogb3ZlciBjdXJyZW50IGluZGljYXRvciBjaGFuZ2UgKi8KKyNkZWZpbmUgUkhfSFNfQ1JXRQkJMHg4MDAwMDAwMAkvKiBjbGVhciByZW1vdGUgd2FrZXVwIGVuYWJsZSAqLwogCiAvKiByb290aHViLmIgbWFza3MgKi8KLSNkZWZpbmUgUkhfQl9EUgkJMHgwMDAwZmZmZgkJLyogZGV2aWNlIHJlbW92YWJsZSBmbGFncyAqLwotI2RlZmluZSBSSF9CX1BQQ00JMHhmZmZmMDAwMAkJLyogcG9ydCBwb3dlciBjb250cm9sIG1hc2sgKi8KKyNkZWZpbmUgUkhfQl9EUgkJCTB4MDAwMGZmZmYJLyogZGV2aWNlIHJlbW92YWJsZSBmbGFncyAqLworI2RlZmluZSBSSF9CX1BQQ00JCTB4ZmZmZjAwMDAJLyogcG9ydCBwb3dlciBjb250cm9sIG1hc2sgKi8KIAogLyogcm9vdGh1Yi5hIG1hc2tzICovCi0jZGVmaW5lCVJIX0FfTkRQCSgweGZmIDw8IDApCQkvKiBudW1iZXIgb2YgZG93bnN0cmVhbSBwb3J0cyAqLwotI2RlZmluZQlSSF9BX1BTTQkoMSA8PCA4KQkJLyogcG93ZXIgc3dpdGNoaW5nIG1vZGUgKi8KLSNkZWZpbmUJUkhfQV9OUFMJKDEgPDwgOSkJCS8qIG5vIHBvd2VyIHN3aXRjaGluZyAqLwotI2RlZmluZQlSSF9BX0RUCQkoMSA8PCAxMCkJCS8qIGRldmljZSB0eXBlIChtYnopICovCi0jZGVmaW5lCVJIX0FfT0NQTQkoMSA8PCAxMSkJCS8qIG92ZXIgY3VycmVudCBwcm90ZWN0aW9uIG1vZGUgKi8KLSNkZWZpbmUJUkhfQV9OT0NQCSgxIDw8IDEyKQkJLyogbm8gb3ZlciBjdXJyZW50IHByb3RlY3Rpb24gKi8KLSNkZWZpbmUJUkhfQV9QT1RQR1QJKDB4ZmYgPDwgMjQpCQkvKiBwb3dlciBvbiB0byBwb3dlciBnb29kIHRpbWUgKi8KKyNkZWZpbmUJUkhfQV9ORFAJCSgweGZmIDw8IDApCS8qIG51bWJlciBvZiBkb3duc3RyZWFtIHBvcnRzICovCisjZGVmaW5lCVJIX0FfUFNNCQkoMSA8PCA4KQkvKiBwb3dlciBzd2l0Y2hpbmcgbW9kZSAqLworI2RlZmluZQlSSF9BX05QUwkJKDEgPDwgOSkJLyogbm8gcG93ZXIgc3dpdGNoaW5nICovCisjZGVmaW5lCVJIX0FfRFQJCQkoMSA8PCAxMCkJLyogZGV2aWNlIHR5cGUgKG1ieikgKi8KKyNkZWZpbmUJUkhfQV9PQ1BNCQkoMSA8PCAxMSkJLyogb3ZlciBjdXJyZW50IHByb3RlY3Rpb24gbW9kZSAqLworI2RlZmluZQlSSF9BX05PQ1AJCSgxIDw8IDEyKQkvKiBubyBvdmVyIGN1cnJlbnQgcHJvdGVjdGlvbiAqLworI2RlZmluZQlSSF9BX1BPVFBHVAkJKDB4ZmYgPDwgMjQpCS8qIHBvd2VyIG9uIHRvIHBvd2VyIGdvb2QgdGltZSAqLwogCiAvKiB1cmIgKi8KICNkZWZpbmUgTl9VUkJfVEQgNDgKIHR5cGVkZWYgc3RydWN0CiB7CiAJZWRfdCAqZWQ7Ci0JX191MTYgbGVuZ3RoOwkvKiBudW1iZXIgb2YgdGRzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlcXVlc3QgKi8KLQlfX3UxNiB0ZF9jbnQ7CS8qIG51bWJlciBvZiB0ZHMgYWxyZWFkeSBzZXJ2aWNlZCAqLworCV9fdTE2IGxlbmd0aDsJCS8qIG51bWJlciBvZiB0ZHMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgcmVxdWVzdCAqLworCV9fdTE2IHRkX2NudDsJCS8qIG51bWJlciBvZiB0ZHMgYWxyZWFkeSBzZXJ2aWNlZCAqLwogCWludCAgIHN0YXRlOwogCXVuc2lnbmVkIGxvbmcgcGlwZTsKIAlpbnQgYWN0dWFsX2xlbmd0aDsKQEAgLTM1NSwxMSArMzU1LDExIEBACiAJaW50IHNsZWVwaW5nOwogCXVuc2lnbmVkIGxvbmcgZmxhZ3M7CQkvKiBmb3IgSEMgYnVncyAqLwogCi0Jc3RydWN0IG9oY2lfcmVncyAqcmVnczsJLyogT0hDSSBjb250cm9sbGVyJ3MgbWVtb3J5ICovCisJc3RydWN0IG9oY2lfcmVncyAqcmVnczsJCS8qIE9IQ0kgY29udHJvbGxlcidzIG1lbW9yeSAqLwogCi0JZWRfdCAqZWRfcm1fbGlzdFsyXTsgICAgIC8qIGxpc3RzIG9mIGFsbCBlbmRwb2ludHMgdG8gYmUgcmVtb3ZlZCAqLwotCWVkX3QgKmVkX2J1bGt0YWlsOyAgICAgICAvKiBsYXN0IGVuZHBvaW50IG9mIGJ1bGsgbGlzdCAqLwotCWVkX3QgKmVkX2NvbnRyb2x0YWlsOyAgICAvKiBsYXN0IGVuZHBvaW50IG9mIGNvbnRyb2wgbGlzdCAqLworCWVkX3QgKmVkX3JtX2xpc3RbMl07CQkvKiBsaXN0cyBvZiBhbGwgZW5kcG9pbnRzIHRvIGJlIHJlbW92ZWQgKi8KKwllZF90ICplZF9idWxrdGFpbDsJCS8qIGxhc3QgZW5kcG9pbnQgb2YgYnVsayBsaXN0ICovCisJZWRfdCAqZWRfY29udHJvbHRhaWw7CQkvKiBsYXN0IGVuZHBvaW50IG9mIGNvbnRyb2wgbGlzdCAqLwogCWludCBpbnRyc3RhdHVzOwogCV9fdTMyIGhjX2NvbnRyb2w7CQkvKiBjb3B5IG9mIHRoZSBoYyBjb250cm9sIHJlZyAqLwogCXN0cnVjdCB1c2JfZGV2aWNlICpkZXZbMzJdOwpAQCAtMzcxLDcgKzM3MSw3IEBACiAjZGVmaW5lIE5VTV9FRFMgOAkJLyogbnVtIG9mIHByZWFsbG9jYXRlZCBlbmRwb2ludCBkZXNjcmlwdG9ycyAqLwogCiBzdHJ1Y3Qgb2hjaV9kZXZpY2UgewotCWVkX3QgCWVkW05VTV9FRFNdOworCWVkX3QJZWRbTlVNX0VEU107CiAJaW50IGVkX2NudDsKIH07CiAKZGlmZiAtLWdpdCBhL2NwdS9taXBzL2luY2FpcF93ZHQuUyBiL2NwdS9taXBzL2luY2FpcF93ZHQuUwppbmRleCAyZWJjYzkxLi4zMjkzODZiIDEwMDY0NAotLS0gYS9jcHUvbWlwcy9pbmNhaXBfd2R0LlMKKysrIGIvY3B1L21pcHMvaW5jYWlwX3dkdC5TCkBAIC01MSw3ICs1MSw3IEBACiAJYW5kCXQzLCAweEZGRkZGRjAxCiAKIAlvcgl0MywgdDIKLQlvciAJdDMsIDB4RjAKKwlvcgl0MywgMHhGMAogCiAJc3cJdDMsIFdEX0NPTjAodDApCQkvKiB3cml0ZSBwYXNzd29yZCAqLwogCmRpZmYgLS1naXQgYS9jcHUvbWlwcy9zdGFydC5TIGIvY3B1L21pcHMvc3RhcnQuUwppbmRleCA5NDcxMjhkLi5kODgxODc5IDEwMDY0NAotLS0gYS9jcHUvbWlwcy9zdGFydC5TCisrKyBiL2NwdS9taXBzL3N0YXJ0LlMKQEAgLTM0NSw3ICszNDUsNyBAQAogCWpyCXQwCiAJbm9wCiAKLQkud29yZCAJX2dwCisJLndvcmQJX2dwCiAJLndvcmQJX0dMT0JBTF9PRkZTRVRfVEFCTEVfCiAJLndvcmQJdWJvb3RfZW5kX2RhdGEKIAkud29yZAl1Ym9vdF9lbmQKZGlmZiAtLWdpdCBhL2NwdS9tcGM1MTJ4L3N0YXJ0LlMgYi9jcHUvbXBjNTEyeC9zdGFydC5TCmluZGV4IDVhOWQ4NjguLmZiOGFjYjUgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1MTJ4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzUxMngvc3RhcnQuUwpAQCAtMjE5LDcgKzIxOSw3IEBACiAJICogVGhlIFNSQU0gd2luZG93IGhhcyBhIGZpeGVkIHNpemUgKDI1NkspLCBzbyBvbmx5IHRoZSBzdGFydCBhZGRyZXNzCiAJICogaXMgbmVjZXNzYXJ5CiAJICovCi0JbGlzIAlyNCwgU1RBUlRfUkVHKENGR19TUkFNX0JBU0UpICYgMHhmZjAwCisJbGlzCXI0LCBTVEFSVF9SRUcoQ0ZHX1NSQU1fQkFTRSkgJiAweGZmMDAKIAlzdHcJcjQsIFNSQU1CQVIocjMpCiAKIAkvKgpkaWZmIC0tZ2l0IGEvY3B1L21wYzV4eC9jb25maWcubWsgYi9jcHUvbXBjNXh4L2NvbmZpZy5tawppbmRleCA2ZDY2YzMyLi4xNTdkZGM1IDEwMDY0NAotLS0gYS9jcHUvbXBjNXh4L2NvbmZpZy5taworKysgYi9jcHUvbXBjNXh4L2NvbmZpZy5tawpAQCAtMjgsNyArMjgsNyBAQAogIwogCiAKLVBMQVRGT1JNX1JFTEZMQUdTICs9IAktZlBJQyAtZmZpeGVkLXIxNCAtbWVhYmkKK1BMQVRGT1JNX1JFTEZMQUdTICs9CS1mUElDIC1mZml4ZWQtcjE0IC1tZWFiaQogCiBQTEFURk9STV9DUFBGTEFHUyArPQktRENPTkZJR181eHggLWZmaXhlZC1yMiAtbXBvd2VycGMgLW1zb2Z0LWZsb2F0CiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM1eHgvY3B1X2luaXQuYyBiL2NwdS9tcGM1eHgvY3B1X2luaXQuYwppbmRleCBmNGNkMjRiLi41YmJiNzk4IDEwMDY0NAotLS0gYS9jcHUvbXBjNXh4L2NwdV9pbml0LmMKKysrIGIvY3B1L21wYzV4eC9jcHVfaW5pdC5jCkBAIC0yMyw3ICsyMyw3IEBACiAgKiBGaWxlOgkJY3B1X2luaXQuYwogICoKICAqIERpc2NyaXB0aW9uOgkJQ29udGFpbnMgaW5pdGlhbGlzYXRpb24gZnVuY3Rpb25zIHRvIHNldHVwCi0gKiAgICAJCQl0aGUgY3B1IHByb3Blcmx5CisgKgkJCXRoZSBjcHUgcHJvcGVybHkKICAqCiAgKi8KIApAQCAtMTE4LDYgKzExOCw2IEBACiAgKi8KIGludCBjcHVfaW5pdF9yICh2b2lkKQogewotICAJLyogTm90aGluZyB0byBkbyBhdCB0aGUgbW9tZW50ICovCisJLyogTm90aGluZyB0byBkbyBhdCB0aGUgbW9tZW50ICovCiAJcmV0dXJuICgwKTsKIH0KZGlmZiAtLWdpdCBhL2NwdS9tcGM1eHgvc2VyaWFsLmMgYi9jcHUvbXBjNXh4L3NlcmlhbC5jCmluZGV4IGFjNTU1NmYuLjM5ZjU3YTEgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1eHgvc2VyaWFsLmMKKysrIGIvY3B1L21wYzV4eC9zZXJpYWwuYwpAQCAtMjQsOCArMjQsOCBAQAogICogRmlsZToJCXNlcmlhbC5jCiAgKgogICogRGlzY3JpcHRpb246CQlTZXJpYWwgaW50ZXJmYWNlIGRyaXZlciBmb3IgU0NJMSBhbmQgU0NJMi4KLSAqICAgICAJCQlTaW5jZSB0aGlzIGNvZGUgd2lsbCBiZSBjYWxsZWQgZnJvbSBST00gdXNlCi0gKiAJCQlvbmx5IG5vbi1zdGF0aWMgbG9jYWwgdmFyaWFibGVzLgorICoJCQlTaW5jZSB0aGlzIGNvZGUgd2lsbCBiZSBjYWxsZWQgZnJvbSBST00gdXNlCisgKgkJCW9ubHkgbm9uLXN0YXRpYyBsb2NhbCB2YXJpYWJsZXMuCiAgKgogICovCiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM1eHgvc3BlZWQuYyBiL2NwdS9tcGM1eHgvc3BlZWQuYwppbmRleCA2YTFmYTE1Li43YjdjNWI5IDEwMDY0NAotLS0gYS9jcHUvbXBjNXh4L3NwZWVkLmMKKysrIGIvY3B1L21wYzV4eC9zcGVlZC5jCkBAIC00OSw4ICs0OSw4IEBACiAJaWYoaW1tci0+aW1fY2xrcnN0LmNhcl9wbHByY3IgJiBQTFBSQ1JfQ1NSQ19NU0spIHsKIAkJZ2QtPmNwdV9jbGsgPSB2Y29vdXQgLyAoMl4oKChpbW1yLT5pbV9jbGtyc3QuY2FyX3NjY3IgJiBTQ0NSX0RGTkxfTVNLKSA+PiBTQ0NSX0RGTkxfU0hJRlQpICsgMSkpOwogCX0gZWxzZSB7Ci0gICAgCQlnZC0+Y3B1X2NsayA9IHZjb291dCAvICgyXihpbW1yLT5pbV9jbGtyc3QuY2FyX3NjY3IgJiBTQ0NSX0RGTkhfTVNLKSk7Ci0gICAgCX0KKwkJZ2QtPmNwdV9jbGsgPSB2Y29vdXQgLyAoMl4oaW1tci0+aW1fY2xrcnN0LmNhcl9zY2NyICYgU0NDUl9ERk5IX01TSykpOworCX0KIAogI2Vsc2UgLyogQ09ORklHXzV4eF9HQ0xLX0ZSRVEgKi8KIAlnZC0+YnVzX2NsayA9IENPTkZJR181eHhfR0NMS19GUkVROwpkaWZmIC0tZ2l0IGEvY3B1L21wYzV4eC9zcGkuYyBiL2NwdS9tcGM1eHgvc3BpLmMKaW5kZXggODFjOWRkYi4uM2MxODdiZSAxMDA2NDQKLS0tIGEvY3B1L21wYzV4eC9zcGkuYworKysgYi9jcHUvbXBjNXh4L3NwaS5jCkBAIC0yMDgsOSArMjA4LDkgQEAKIAkgKiBTZXR1cCBSQU0KIAkgKi8KIAlmb3IoaT0wO2k8MzI7aSsrKSB7Ci0JIAkgcXNtY20tPnFzbWNtX3JlY3JhbVtpXT0weDAwMDA7Ci0JIAkgcXNtY20tPnFzbWNtX3RyYW5yYW1baV09MHgwMDAwOwotCSAJIHFzbWNtLT5xc21jbV9jb21kcmFtW2ldPTB4MDA7CisJCSBxc21jbS0+cXNtY21fcmVjcmFtW2ldPTB4MDAwMDsKKwkJIHFzbWNtLT5xc21jbV90cmFucmFtW2ldPTB4MDAwMDsKKwkJIHFzbWNtLT5xc21jbV9jb21kcmFtW2ldPTB4MDA7CiAJfQogCXJldHVybjsKIH0KQEAgLTIzOCw5ICsyMzgsOSBAQAogCWltbXIgPSAoaW1tYXBfdCAqKSAgQ0ZHX0lNTVI7CiAJcXNtY20gPSAocXNtY201eHhfdCAqKSZpbW1yLT5pbV9xc21jbTsKIAlmb3IoaT0wO2k8MzI7aSsrKSB7Ci0JIAkgcXNtY20tPnFzbWNtX3JlY3JhbVtpXT0weDAwMDA7Ci0JIAkgcXNtY20tPnFzbWNtX3RyYW5yYW1baV09MHgwMDAwOwotCSAJIHFzbWNtLT5xc21jbV9jb21kcmFtW2ldPTB4MDA7CisJCSBxc21jbS0+cXNtY21fcmVjcmFtW2ldPTB4MDAwMDsKKwkJIHFzbWNtLT5xc21jbV90cmFucmFtW2ldPTB4MDAwMDsKKwkJIHFzbWNtLT5xc21jbV9jb21kcmFtW2ldPTB4MDA7CiAJfQogCXFzbWNtLT5xc21jbV90cmFucmFtWzBdID0gIFNQSV9FRVBST01fV1JFTjsgLyogd3JpdGUgZW5hYmxlICovCiAJc3BpX3hmZXIoMSk7CkBAIC0zMTIsOSArMzEyLDkgQEAKIAlxc21jbSA9IChxc21jbTV4eF90ICopJmltbXItPmltX3FzbWNtOwogCiAJZm9yKGk9MDtpPDMyO2krKykgewotCSAJIHFzbWNtLT5xc21jbV9yZWNyYW1baV09MHgwMDAwOwotCSAJIHFzbWNtLT5xc21jbV90cmFucmFtW2ldPTB4MDAwMDsKLQkgCSBxc21jbS0+cXNtY21fY29tZHJhbVtpXT0weDAwOworCQkgcXNtY20tPnFzbWNtX3JlY3JhbVtpXT0weDAwMDA7CisJCSBxc21jbS0+cXNtY21fdHJhbnJhbVtpXT0weDAwMDA7CisJCSBxc21jbS0+cXNtY21fY29tZHJhbVtpXT0weDAwOwogCX0KIAlpPTA7CiAJcXNtY20tPnFzbWNtX3RyYW5yYW1baSsrXSA9IChTUElfRUVQUk9NX1JFQUQpOyAvKiBSRUFEIG1lbW9yeSBhcnJheSAqLwpkaWZmIC0tZ2l0IGEvY3B1L21wYzV4eC90cmFwcy5jIGIvY3B1L21wYzV4eC90cmFwcy5jCmluZGV4IGQyMmI4OWEuLjc4YzgyMGEgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1eHgvdHJhcHMuYworKysgYi9jcHUvbXBjNXh4L3RyYXBzLmMKQEAgLTIyMyw4ICsyMjMsOCBAQAogdm9pZCBEZWJ1Z0V4Y2VwdGlvbihzdHJ1Y3QgcHRfcmVncyAqcmVncykKIHsKIAlwcmludGYoIkRlYnVnZ2VyIHRyYXAgYXQgQCAlbHhcbiIsIHJlZ3MtPm5pcCApOwotICAJc2hvd19yZWdzKHJlZ3MpOworCXNob3dfcmVncyhyZWdzKTsKICNpZiBkZWZpbmVkKENPTkZJR19DTURfQkVEQlVHKQotICAJZG9fYmVkYnVnX2JyZWFrcG9pbnQoIHJlZ3MgKTsKKwlkb19iZWRidWdfYnJlYWtwb2ludCggcmVncyApOwogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9jcHUvbXBjNXh4L3UtYm9vdC5sZHMgYi9jcHUvbXBjNXh4L3UtYm9vdC5sZHMKaW5kZXggMzg2YTZlMC4uNzQzNGUzZiAxMDA2NDQKLS0tIGEvY3B1L21wYzV4eC91LWJvb3QubGRzCisrKyBiL2NwdS9tcGM1eHgvdS1ib290LmxkcwpAQCAtMzMsMTEgKzMzLDExIEBACiAgIC5keW5zeW0gICAgICAgIDogeyAqKC5keW5zeW0pCQl9CiAgIC5keW5zdHIgICAgICAgIDogeyAqKC5keW5zdHIpCQl9CiAgIC5yZWwudGV4dCAgICAgIDogeyAqKC5yZWwudGV4dCkJCX0KLSAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkgCX0KKyAgLnJlbGEudGV4dCAgICAgOiB7ICooLnJlbGEudGV4dCkJfQogICAucmVsLmRhdGEgICAgICA6IHsgKigucmVsLmRhdGEpCQl9Ci0gIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpIAl9Ci0gIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKSAJfQotICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpIAl9CisgIC5yZWxhLmRhdGEgICAgIDogeyAqKC5yZWxhLmRhdGEpCX0KKyAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpCX0KKyAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKQl9CiAgIC5yZWwuZ290ICAgICAgIDogeyAqKC5yZWwuZ290KQkJfQogICAucmVsYS5nb3QgICAgICA6IHsgKigucmVsYS5nb3QpCQl9CiAgIC5yZWwuY3RvcnMgICAgIDogeyAqKC5yZWwuY3RvcnMpCX0KZGlmZiAtLWdpdCBhL2NwdS9tcGM1eHh4L2ZlYy5jIGIvY3B1L21wYzV4eHgvZmVjLmMKaW5kZXggMmFkZWQxYS4uODI2NDBhYiAxMDA2NDQKLS0tIGEvY3B1L21wYzV4eHgvZmVjLmMKKysrIGIvY3B1L21wYzV4eHgvZmVjLmMKQEAgLTg4NCw3ICs4ODQsNyBAQAogCiAJZmVjID0gKG1wYzV4eHhfZmVjX3ByaXYgKiltYWxsb2Moc2l6ZW9mKCpmZWMpKTsKIAlkZXYgPSAoc3RydWN0IGV0aF9kZXZpY2UgKiltYWxsb2Moc2l6ZW9mKCpkZXYpKTsKLSAgIAltZW1zZXQoZGV2LCAwLCBzaXplb2YgKmRldik7CisJbWVtc2V0KGRldiwgMCwgc2l6ZW9mICpkZXYpOwogCiAJZmVjLT5ldGggPSAoZXRoZXJuZXRfcmVncyAqKU1QQzVYWFhfRkVDOwogCWZlYy0+dGJkQmFzZSA9IChGRUNfVEJEICopRkVDX0JEX0JBU0U7CmRpZmYgLS1naXQgYS9jcHUvbXBjNXh4eC91LWJvb3QtY3VzdG9tbGF5b3V0LmxkcyBiL2NwdS9tcGM1eHh4L3UtYm9vdC1jdXN0b21sYXlvdXQubGRzCmluZGV4IGJiYjZjZjguLjM4NDc4NjAgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM1eHh4L3UtYm9vdC1jdXN0b21sYXlvdXQubGRzCisrKyBiL2NwdS9tcGM1eHh4L3UtYm9vdC1jdXN0b21sYXlvdXQubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvY3B1L21wYzV4eHgvdS1ib290LmxkcyBiL2NwdS9tcGM1eHh4L3UtYm9vdC5sZHMKaW5kZXggZGI2YzZmMi4uMTNmZmZiOCAxMDA2NDQKLS0tIGEvY3B1L21wYzV4eHgvdS1ib290LmxkcworKysgYi9jcHUvbXBjNXh4eC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvY3B1L21wYzgyMjAvdS1ib290LmxkcyBiL2NwdS9tcGM4MjIwL3UtYm9vdC5sZHMKaW5kZXggZmY0ZjNkYy4uZTM0YTlkNCAxMDA2NDQKLS0tIGEvY3B1L21wYzgyMjAvdS1ib290LmxkcworKysgYi9jcHUvbXBjODIyMC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvY3B1L21wYzgyNHgvZHJpdmVycy9lcGljL2VwaWMyLlMgYi9jcHUvbXBjODI0eC9kcml2ZXJzL2VwaWMvZXBpYzIuUwppbmRleCA4Y2MyZmM2Li41MmQxOWFhIDEwMDY0NAotLS0gYS9jcHUvbXBjODI0eC9kcml2ZXJzL2VwaWMvZXBpYzIuUworKysgYi9jcHUvbXBjODI0eC9kcml2ZXJzL2VwaWMvZXBpYzIuUwpAQCAtMTY5LDcgKzE2OSw3IEBACiAJeG9yCXIzLHIzLHIzCiAgICAgeG9yIHI0LHI0LHI0CiAJb3IgICAgcjMsIHIzLCByNiAgICAgICAgLyogIGV1bWJiYXIgaW4gcjMgKi8KLQlhbmRpLiByNCxyNywweDAwZmYgICAJLyogTWFzayBvZmYgYml0cywgdmVjdG9yIGluIHI0ICovCisJYW5kaS4gcjQscjcsMHgwMGZmCS8qIE1hc2sgb2ZmIGJpdHMsIHZlY3RvciBpbiByNCAqLwogCiAgICAgc3R3ICAgICByNCwweDA0KHIxKSAgICAgLyogc2F2ZSB0aGUgdmVjdG9yIHZhbHVlICovCiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXJyb3JzLmggYi9jcHUvbXBjODI0eC9kcml2ZXJzL2Vycm9ycy5oCmluZGV4IDg4N2YyODQuLjIwNzk0YTIgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjR4L2RyaXZlcnMvZXJyb3JzLmgKKysrIGIvY3B1L21wYzgyNHgvZHJpdmVycy9lcnJvcnMuaApAQCAtNjEsNyArNjEsNyBAQAogICAgbWVzc2FnZSBiYWNrIHRvIHRoZSB1c2VyLgogKi8KIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiB0aGVzZSBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgcGFyc2VyIHJvdXRpbmVzIAkJCSovCisvKiB0aGVzZSBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgcGFyc2VyIHJvdXRpbmVzCQkJKi8KIAogI2RlZmluZSBVTktOT1dOX0NPTU1BTkQJCTB4ZmIwMCAvKiAidW5yZWNvZ25pemVkIGNvbW1hbmQgIiAqLwogI2RlZmluZSBVTktOT1dOX1JFR0lTVEVSCTB4ZmIwMSAvKiAidW5rbm93biByZWdpc3RlciAiKi8KQEAgLTczLDggKzczLDggQEAKICNkZWZpbmUgVU5JTVBMRU1FTlRFRF9TVEFHRQkweGZiMDUgLyogaW52YWxpZCByZCBvciBybW0gcGFyYW1ldGVyIGZvcm1hdCAqLwogI2RlZmluZSBSRUdfTk9UX1dSSVRFQUJMRQkweGZiMDYgLyogInVua25vd24gb3BlcmF0b3IgaW4gYXJndWVtZW50cyIqLwogI2RlZmluZSBJTlZBTElEX0ZJTEVOQU1FCTB4ZmIwNyAvKiAiaW52YWxpZCBkb3dubG9hZCBmaWxlbmFtZSIgKi8KLSNkZWZpbmUgSU5WQUxJRF9CQVVEX1JBVEUJMHhmYjA4IAkvKiBpbnZhbGlkIGJhdWQgcmF0ZSBmcm9tIHNiIGNvbW1hbmQgKi8KLSNkZWZpbmUgVU5TVVBQT1JURURfUkVHSVNURVIJMHhmYjA5IAkvKiBTcGVjaWFsIHJlZ2lzdGVyIGlzIG5vdCBzdXBwb3J0ZWQgKi8KKyNkZWZpbmUgSU5WQUxJRF9CQVVEX1JBVEUJMHhmYjA4CS8qIGludmFsaWQgYmF1ZCByYXRlIGZyb20gc2IgY29tbWFuZCAqLworI2RlZmluZSBVTlNVUFBPUlRFRF9SRUdJU1RFUgkweGZiMDkJLyogU3BlY2lhbCByZWdpc3RlciBpcyBub3Qgc3VwcG9ydGVkICovCiAjZGVmaW5lIEZPUl9CT0FSRF9PTkxZCQkweGZiMGEgIC8qICJOb3QgYXZhaWxhYmxlIGZvciBVbml4LiIgKi8KIAogCkBAIC0xNDAsMjAgKzE0MCwyMCBAQAogI2RlZmluZSBJTlZBTElEX0ZMQUcJCTB4ZmQwYwkvKiBpbnZhbGlkIGZsYWcgKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLS8qIHRoZXNlIGFyZSBmb3IgdGhlIGdldGFyZyB0b29sYm94IAkJCQkJKi8KKy8qIHRoZXNlIGFyZSBmb3IgdGhlIGdldGFyZyB0b29sYm94CQkJCQkqLwogCi0jZGVmaW5lIElOVkFMSURfTlVNQkVSX0FSR1MgCTB4RkUwMCAvKiBpbnZhbGlkIG51bWJlciBvZiBjb21tZCBhcmd1ZW1lbnRzICovCisjZGVmaW5lIElOVkFMSURfTlVNQkVSX0FSR1MJMHhGRTAwIC8qIGludmFsaWQgbnVtYmVyIG9mIGNvbW1kIGFyZ3VlbWVudHMgKi8KICNkZWZpbmUgVU5LTk9XTl9QQVJBTUVURVIJMHhGRTAxIC8qICJ1bmtub3duIHR5cGUgb2YgcGFyYW1ldGVyICIqLwogCiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0vKiB0aGVzZSBhcmUgZm9yIHRoZSB0b2tlbml6ZXIgdG9vbGJveCAJCQkJCSovCisvKiB0aGVzZSBhcmUgZm9yIHRoZSB0b2tlbml6ZXIgdG9vbGJveAkJCQkJKi8KIAotI2RlZmluZSBJTExFR0FMX0NIQVJBQ1RFUiAJMHhGRjAwIC8qIHVucmVjb2duaXplZCBjaGFyLiBpbiBpbnB1dCBzdHJlYW0qLwotI2RlZmluZSBUVExfTk9UX1NPUlRFRCAJCTB4RkYwMSAvKiB0b2tlbiB0cmFuc2xhdGlvbiBsaXN0IG5vdCBzb3J0ZWQgKi8KLSNkZWZpbmUgVFRMX05PVF9ERUZJTkVEIAkweEZGMDIgLyogdG9rZW4gdHJhbnNsYXRpb24gbGlzdCBub3QgYXNzaWduZWQqLwotI2RlZmluZSBJTlZBTElEX1NUUklORyAJCTB4RkYwMyAvKiB1bmFibGUgdG8gZXh0cmFjdCBzdHJpbmcgZnJvbSBpbnB1dCAqLwotI2RlZmluZSBCVUZGRVJfRU1QVFkgCQkweEZGMDQgLyogImlucHV0IGJ1ZmZlciBpcyBlbXB0eSIgKi8KKyNkZWZpbmUgSUxMRUdBTF9DSEFSQUNURVIJMHhGRjAwIC8qIHVucmVjb2duaXplZCBjaGFyLiBpbiBpbnB1dCBzdHJlYW0qLworI2RlZmluZSBUVExfTk9UX1NPUlRFRAkJMHhGRjAxIC8qIHRva2VuIHRyYW5zbGF0aW9uIGxpc3Qgbm90IHNvcnRlZCAqLworI2RlZmluZSBUVExfTk9UX0RFRklORUQJCTB4RkYwMiAvKiB0b2tlbiB0cmFuc2xhdGlvbiBsaXN0IG5vdCBhc3NpZ25lZCovCisjZGVmaW5lIElOVkFMSURfU1RSSU5HCQkweEZGMDMgLyogdW5hYmxlIHRvIGV4dHJhY3Qgc3RyaW5nIGZyb20gaW5wdXQgKi8KKyNkZWZpbmUgQlVGRkVSX0VNUFRZCQkweEZGMDQgLyogImlucHV0IGJ1ZmZlciBpcyBlbXB0eSIgKi8KICNkZWZpbmUgSU5WQUxJRF9NT0RFCQkweEZGMDUgLyogaW5wdXQgYnVmIGlzIGluIGFuIHVucmVjb2duaXplZCBtb2RlKi8KICNkZWZpbmUgVE9LX0lOVEVSTkFMX0VSUk9SCTB4RkYwNiAvKiAiaW50ZXJuYWwgdG9rZW5pemVyIGVycm9yIiAqLwogI2RlZmluZSBUT09fTUFOWV9JQlMJCTB4RkYwNyAvKiAidG9vIG1hbnkgb3BlbiBpbnB1dCBidWZmZXJzIiAqLwpAQCAtMTcyLDcgKzE3Miw3IEBACiAKIC8qIFRIRVNFIGFyZSBmb3IgdGhlIGRvd25sb2FkZXIgKi8KIAotI2RlZmluZSBOT1RfSU5fU19SRUNPUkRfRk9STUFUIAkweGY5MDAgLyogIm5vdCBpbiBTLVJlY29yZCBGb3JtYXQiICovCisjZGVmaW5lIE5PVF9JTl9TX1JFQ09SRF9GT1JNQVQJMHhmOTAwIC8qICJub3QgaW4gUy1SZWNvcmQgRm9ybWF0IiAqLwogI2RlZmluZSBVTlJFQ19SRUNPUkRfVFlQRQkweGY5MDEgLyogInVucmVjb2duaXplZCByZWNvcmQgdHlwZSIgKi8KICNkZWZpbmUgQ09OVkVSU0lPTl9FUlJPUgkweGY5MDIgLyogImFzY2lpIHRvIGludCBjb252ZXJzaW9uIGVycm9yIiAqLwogI2RlZmluZSBJTlZBTElEX01FTU9SWQkJMHhmOTAzIC8qICJiYWQgcy1yZWNvcmQgbWVtb3J5IGFkZHJlc3MgIiAqLwpAQCAtMTkwLDcgKzE5MCw3IEBACiAvKiB0aGVzZSBhcmUgZm9yIHRoZSBEVUFSVCBoYW5kbGluZyB0aGluZ3MgKi8KIAogCQkJCQkvKiAidW5yZWNvZ25pemVkIHNlcmlhbCBwb3J0IGNvbmZpZ3VyYXRpb24iICovCi0jZGVmaW5lIFVOS05PV05fUE9SVF9TVEFURSAJMHhmNzAwCisjZGVmaW5lIFVOS05PV05fUE9SVF9TVEFURQkweGY3MDAKIAogCiAvKiB0aGVzZSBhcmUgZm9yIHRoZSByZWdpc3RlciB0b29sYm94ICovCkBAIC0yMDgsNSArMjA4LDUgQEAKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotLyogdGhlc2UgYXJlIHNwZWNpZmljYWxseSBmb3IgdGhlIGZsYXNoIHJvdXRpbmVzIAkJCSovCi0jZGVmaW5lIEZMQVNIX0VSUk9SCSAJMHhmMTAwCQkvKiBnZW5lcmFsIGZsYXNoIGVycm9yICovCisvKiB0aGVzZSBhcmUgc3BlY2lmaWNhbGx5IGZvciB0aGUgZmxhc2ggcm91dGluZXMJCQkqLworI2RlZmluZSBGTEFTSF9FUlJPUgkJMHhmMTAwCQkvKiBnZW5lcmFsIGZsYXNoIGVycm9yICovCmRpZmYgLS1naXQgYS9jcHUvbXBjODI0eC91LWJvb3QubGRzIGIvY3B1L21wYzgyNHgvdS1ib290LmxkcwppbmRleCAxZjJlN2Q3Li5hYTMwNTBkIDEwMDY0NAotLS0gYS9jcHUvbXBjODI0eC91LWJvb3QubGRzCisrKyBiL2NwdS9tcGM4MjR4L3UtYm9vdC5sZHMKQEAgLTMzLDExICszMywxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9jcHUvbXBjODI2MC9pMmMuYyBiL2NwdS9tcGM4MjYwL2kyYy5jCmluZGV4IDM0YmQzODkuLmMzYWY3YjYgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4MjYwL2kyYy5jCisrKyBiL2NwdS9tcGM4MjYwL2kyYy5jCkBAIC0xOTEsMTAgKzE5MSwxMCBAQAogCiAJCQlpZiAoKGRpZmYgPj0gMCkgJiYgKGRpZmYgPCBiZXN0c3BlZWRfZGlmZikpCiAJCQl7Ci0JCQkJYmVzdHNwZWVkX2RpZmYgCT0gZGlmZiA7Ci0JCQkJYmVzdHNwZWVkX21vZHZhbCAJPSBtb2R2YWw7Ci0JCQkJYmVzdHNwZWVkX2JyZ3ZhbCAJPSBicmd2YWw7Ci0JCQkJYmVzdHNwZWVkX2ZpbHRlciAJPSBmaWx0ZXI7CisJCQkJYmVzdHNwZWVkX2RpZmYJPSBkaWZmIDsKKwkJCQliZXN0c3BlZWRfbW9kdmFsCT0gbW9kdmFsOworCQkJCWJlc3RzcGVlZF9icmd2YWwJPSBicmd2YWw7CisJCQkJYmVzdHNwZWVkX2ZpbHRlcgk9IGZpbHRlcjsKIAkJCX0KIAkJfQogCX0KQEAgLTI0Miw3ICsyNDIsNyBAQAogCS8qCiAJICogaW5pdGlhbGlzZSBkYXRhIGluIGR1YWwgcG9ydCByYW06CiAJICoKLQkgKiAJICBkcGFkZHIgLT4gcGFyYW1ldGVyIHJhbSAoNjQgYnl0ZXMpCisJICoJICBkcGFkZHIgLT4gcGFyYW1ldGVyIHJhbSAoNjQgYnl0ZXMpCiAJICogICAgICAgICByYmFzZSAtPiByeCBCRCAgICAgICAgIChOVU1fUlhfQkRTICogc2l6ZW9mKEkyQ19CRCkgYnl0ZXMpCiAJICogICAgICAgICB0YmFzZSAtPiB0eCBCRCAgICAgICAgIChOVU1fVFhfQkRTICogc2l6ZW9mKEkyQ19CRCkgYnl0ZXMpCiAJICogICAgICAgICAgICAgICAgICB0eCBidWZmZXIgICAgIChNQVhfVFhfU1BBQ0UgYnl0ZXMpCmRpZmYgLS1naXQgYS9jcHUvbXBjODI2MC9zcGVlZC5oIGIvY3B1L21wYzgyNjAvc3BlZWQuaAppbmRleCBiNjYzOTNiLi4zZjMyYTE0IDEwMDY0NAotLS0gYS9jcHUvbXBjODI2MC9zcGVlZC5oCisrKyBiL2NwdS9tcGM4MjYwL3NwZWVkLmgKQEAgLTI4LDEwICsyOCwxMCBAQAogICogU1BFRURfVE1SM19QUyA9IChHQ0xLIC8gKDE2ICogU1BFRURfRkNPVU5UMykpIC0gMQogICoKICAqIFNQRUVEX0ZDT1VOVDIJdGltZXIgMiBjb3VudGluZyBmcmVxdWVuY3kKLSAqIEdDTEsJICAgICAgCQlDUFUgY2xvY2sKKyAqIEdDTEsJCQlDUFUgY2xvY2sKICAqIFNQRUVEX1RNUjJfUFMJcHJlc2NhbGVyCiAgKi8KLSNkZWZpbmUgU1BFRURfVE1SMl9QUyAgCSgyNTAgLSAxKQkvKiBkaXZpZGUgYnkgMjUwCSovCisjZGVmaW5lIFNQRUVEX1RNUjJfUFMJKDI1MCAtIDEpCS8qIGRpdmlkZSBieSAyNTAJKi8KIAogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogVGltZXIgdmFsdWUgZm9yIFBJVApkaWZmIC0tZ2l0IGEvY3B1L21wYzgyNjAvdS1ib290LmxkcyBiL2NwdS9tcGM4MjYwL3UtYm9vdC5sZHMKaW5kZXggNmY1MDBjNC4uMzlmMmNlOSAxMDA2NDQKLS0tIGEvY3B1L21wYzgyNjAvdS1ib290LmxkcworKysgYi9jcHUvbXBjODI2MC91LWJvb3QubGRzCkBAIC0zMywxMSArMzMsMTEgQEAKICAgLmR5bnN5bSAgICAgICAgOiB7ICooLmR5bnN5bSkJCX0KICAgLmR5bnN0ciAgICAgICAgOiB7ICooLmR5bnN0cikJCX0KICAgLnJlbC50ZXh0ICAgICAgOiB7ICooLnJlbC50ZXh0KQkJfQotICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KSAJfQorICAucmVsYS50ZXh0ICAgICA6IHsgKigucmVsYS50ZXh0KQl9CiAgIC5yZWwuZGF0YSAgICAgIDogeyAqKC5yZWwuZGF0YSkJCX0KLSAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkgCX0KLSAgLnJlbC5yb2RhdGEgICAgOiB7ICooLnJlbC5yb2RhdGEpIAl9Ci0gIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkgCX0KKyAgLnJlbGEuZGF0YSAgICAgOiB7ICooLnJlbGEuZGF0YSkJfQorICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkJfQorICAucmVsYS5yb2RhdGEgICA6IHsgKigucmVsYS5yb2RhdGEpCX0KICAgLnJlbC5nb3QgICAgICAgOiB7ICooLnJlbC5nb3QpCQl9CiAgIC5yZWxhLmdvdCAgICAgIDogeyAqKC5yZWxhLmdvdCkJCX0KICAgLnJlbC5jdG9ycyAgICAgOiB7ICooLnJlbC5jdG9ycykJfQpkaWZmIC0tZ2l0IGEvY3B1L21wYzgzeHgvY3B1X2luaXQuYyBiL2NwdS9tcGM4M3h4L2NwdV9pbml0LmMKaW5kZXggZmJhNWIwMi4uZmIxODRkOCAxMDA2NDQKLS0tIGEvY3B1L21wYzgzeHgvY3B1X2luaXQuYworKysgYi9jcHUvbXBjODN4eC9jcHVfaW5pdC5jCkBAIC0yMTgsNyArMjE4LDcgQEAKIAlpbS0+c3lzY29uZi5sYmxhd1swXS5iYXIgPSBDRkdfTEJMQVdCQVIwX1BSRUxJTTsKIAlpbS0+c3lzY29uZi5sYmxhd1swXS5hciA9IENGR19MQkxBV0FSMF9QUkVMSU07CiAjZWxzZQotI2Vycm9yIAlDRkdfQlIwX1BSRUxJTSwgQ0ZHX09SMF9QUkVMSU0sIENGR19MQkxBV0JBUjBfUFJFTElNICYgQ0ZHX0xCTEFXQVIwX1BSRUxJTSBtdXN0IGJlIGRlZmluZWQKKyNlcnJvcglDRkdfQlIwX1BSRUxJTSwgQ0ZHX09SMF9QUkVMSU0sIENGR19MQkxBV0JBUjBfUFJFTElNICYgQ0ZHX0xCTEFXQVIwX1BSRUxJTSBtdXN0IGJlIGRlZmluZWQKICNlbmRpZgogCiAjaWYgZGVmaW5lZChDRkdfQlIxX1BSRUxJTSkgJiYgZGVmaW5lZChDRkdfT1IxX1BSRUxJTSkKZGlmZiAtLWdpdCBhL2NwdS9tcGM4M3h4L3NwZF9zZHJhbS5jIGIvY3B1L21wYzgzeHgvc3BkX3NkcmFtLmMKaW5kZXggNzBjZDQxMC4uNzZmMjQ3NCAxMDA2NDQKLS0tIGEvY3B1L21wYzgzeHgvc3BkX3NkcmFtLmMKKysrIGIvY3B1L21wYzgzeHgvc3BkX3NkcmFtLmMKQEAgLTUxMCw3ICs1MTAsNyBAQAogCWRkci0+dGltaW5nX2NmZ18xID0KIAkgICAgKCgocGljb3NfdG9fY2xrKHNwZC50cnAgKiAyNTApICYgMHgwNykgPDwgMjggKSB8CS8qIFBSRVRPQUNUICovCiAJICAgICAoKHBpY29zX3RvX2NsayhzcGQudHJhcyAqIDEwMDApICYgMHgwZiApIDw8IDI0ICkgfCAvKiBBQ1RUT1BSRSAqLwotCSAgICAgKHRyY2RfY2xrIDw8IDIwICkgfCAgCQkJCS8qIEFDVFRPUlcgKi8KKwkgICAgICh0cmNkX2NsayA8PCAyMCApIHwJCQkJLyogQUNUVE9SVyAqLwogCSAgICAgKGNhc2xhdF9jdHJsIDw8IDE2ICkgfAkJCQkvKiBDQVNMQVQgKi8KIAkgICAgICh0cmZjX2xvdyA8PCAxMiApIHwJCQkJLyogUkVGRUMgKi8KIAkgICAgICgodHdyX2NsayAmIDB4MDcpIDw8IDgpIHwJCQkJLyogV1JSUkVDICovCmRpZmYgLS1naXQgYS9jcHUvbXBjODN4eC91LWJvb3QubGRzIGIvY3B1L21wYzgzeHgvdS1ib290LmxkcwppbmRleCA4ZGE2ZjE0Li45OWFkNjc1IDEwMDY0NAotLS0gYS9jcHUvbXBjODN4eC91LWJvb3QubGRzCisrKyBiL2NwdS9tcGM4M3h4L3UtYm9vdC5sZHMKQEAgLTMxLDExICszMSwxMSBAQAogICAuZHluc3ltICAgICAgICA6IHsgKiguZHluc3ltKQkJfQogICAuZHluc3RyICAgICAgICA6IHsgKiguZHluc3RyKQkJfQogICAucmVsLnRleHQgICAgICA6IHsgKigucmVsLnRleHQpCQl9Ci0gIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpIAl9CisgIC5yZWxhLnRleHQgICAgIDogeyAqKC5yZWxhLnRleHQpCX0KICAgLnJlbC5kYXRhICAgICAgOiB7ICooLnJlbC5kYXRhKQkJfQotICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKSAJfQotICAucmVsLnJvZGF0YSAgICA6IHsgKigucmVsLnJvZGF0YSkgCX0KLSAgLnJlbGEucm9kYXRhICAgOiB7ICooLnJlbGEucm9kYXRhKSAJfQorICAucmVsYS5kYXRhICAgICA6IHsgKigucmVsYS5kYXRhKQl9CisgIC5yZWwucm9kYXRhICAgIDogeyAqKC5yZWwucm9kYXRhKQl9CisgIC5yZWxhLnJvZGF0YSAgIDogeyAqKC5yZWxhLnJvZGF0YSkJfQogICAucmVsLmdvdCAgICAgICA6IHsgKigucmVsLmdvdCkJCX0KICAgLnJlbGEuZ290ICAgICAgOiB7ICooLnJlbGEuZ290KQkJfQogICAucmVsLmN0b3JzICAgICA6IHsgKigucmVsLmN0b3JzKQl9CmRpZmYgLS1naXQgYS9jcHUvbXBjODV4eC9xZV9pby5jIGIvY3B1L21wYzg1eHgvcWVfaW8uYwppbmRleCA5ODA3NWJiLi4yMWVhMzhiIDEwMDY0NAotLS0gYS9jcHUvbXBjODV4eC9xZV9pby5jCisrKyBiL2NwdS9tcGM4NXh4L3FlX2lvLmMKQEAgLTM0LDcgKzM0LDcgQEAKIAl1MzIJCQlwaW5fMmJpdF9hc3NpZ247CiAJdTMyCQkJcGluXzFiaXRfbWFzazsKIAl1MzIJCQl0bXBfdmFsOwotCXZvbGF0aWxlIGNjc3JfZ3VyX3QgCSpndXIgPSAodm9pZCAqKShDRkdfTVBDODV4eF9HVVRTX0FERFIpOworCXZvbGF0aWxlIGNjc3JfZ3VyX3QJKmd1ciA9ICh2b2lkICopKENGR19NUEM4NXh4X0dVVFNfQUREUik7CiAJdm9sYXRpbGUgcGFyX2lvX3QJKnBhcl9pbyA9ICh2b2xhdGlsZSBwYXJfaW9fdCAqKQogCQkJCQkJJihndXItPnFlX3Bhcl9pbyk7CiAKZGlmZiAtLWdpdCBhL2NwdS9tcGM4NXh4L3N0YXJ0LlMgYi9jcHUvbXBjODV4eC9zdGFydC5TCmluZGV4IDE1YjgwNGQuLjJiNWQ5MGUgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4NXh4L3N0YXJ0LlMKKysrIGIvY3B1L21wYzg1eHgvc3RhcnQuUwpAQCAtODksNyArODksNyBAQAogCS8qIEwxICovCiAJbGkJcjAsMgogCW10c3ByCUwxQ1NSMCxyMAkvKiBpbnZhbGlkYXRlIGQtY2FjaGUgKi8KLQltdHNwcglMMUNTUjEscjAgCS8qIGludmFsaWRhdGUgaS1jYWNoZSAqLworCW10c3ByCUwxQ1NSMSxyMAkvKiBpbnZhbGlkYXRlIGktY2FjaGUgKi8KIAogCW1mc3ByCXIxLERCU1IKIAltdHNwcglEQlNSLHIxCQkvKiBDbGVhciBhbGwgdmFsaWQgYml0cyAqLwpkaWZmIC0tZ2l0IGEvY3B1L21wYzg2eHgvc3BkX3NkcmFtLmMgYi9jcHUvbXBjODZ4eC9zcGRfc2RyYW0uYwppbmRleCA4NDg1ODQxLi41Y2MwYzI2IDEwMDY0NAotLS0gYS9jcHUvbXBjODZ4eC9zcGRfc2RyYW0uYworKysgYi9jcHUvbXBjODZ4eC9zcGRfc2RyYW0uYwpAQCAtNTI4LDcgKzUyOCw3IEBACiAJCQljYXNsYXQgLT0gMTsKIAkJZWxzZSBpZiAoYnVzZnJlcSA+IG1heF9kYXRhX3JhdGUpIHsKIAkJCXByaW50ZigiRERSOiBCdXMgZnJlcSAlZCBNSHogaXMgbm90IGZpdCBmb3IgRERSIHJhdGUgJWQgTUh6XG4iLAotCQkgICAgIAlidXNmcmVxLCBtYXhfZGF0YV9yYXRlKTsKKwkJCWJ1c2ZyZXEsIG1heF9kYXRhX3JhdGUpOwogCQkJcmV0dXJuIDA7CiAJCX0KIAl9CmRpZmYgLS1naXQgYS9jcHUvbXBjODZ4eC9zdGFydC5TIGIvY3B1L21wYzg2eHgvc3RhcnQuUwppbmRleCBjNzFjOTI2Li5jMzlkYzQ2IDEwMDY0NAotLS0gYS9jcHUvbXBjODZ4eC9zdGFydC5TCisrKyBiL2NwdS9tcGM4Nnh4L3N0YXJ0LlMKQEAgLTQ4NiwyNSArNDg2LDI1IEBACiAJLmdsb2JsICBlYXJseV9iYXRzCiBlYXJseV9iYXRzOgogCS8qIElCQVQgNSAqLwotCWxpcyAgIAlyNCwgQ0ZHX0lCQVQ1TEBoCisJbGlzCXI0LCBDRkdfSUJBVDVMQGgKIAlvcmkgICAgIHI0LCByNCwgQ0ZHX0lCQVQ1TEBsCi0JbGlzICAgCXIzLCBDRkdfSUJBVDVVQGgKKwlsaXMJcjMsIENGR19JQkFUNVVAaAogCW9yaSAgICAgcjMsIHIzLCBDRkdfSUJBVDVVQGwKIAltdHNwciAgIElCQVQ1TCwgcjQKIAltdHNwciAgIElCQVQ1VSwgcjMKIAlpc3luYwogCiAJLyogREJBVCA1ICovCi0JbGlzICAgCXI0LCBDRkdfREJBVDVMQGgKKwlsaXMJcjQsIENGR19EQkFUNUxAaAogCW9yaSAgICAgcjQsIHI0LCBDRkdfREJBVDVMQGwKLQlsaXMgICAJcjMsIENGR19EQkFUNVVAaAorCWxpcwlyMywgQ0ZHX0RCQVQ1VUBoCiAJb3JpICAgICByMywgcjMsIENGR19EQkFUNVVAbAogCW10c3ByICAgREJBVDVMLCByNAogCW10c3ByICAgREJBVDVVLCByMwogCWlzeW5jCiAKIAkvKiBJQkFUIDYgKi8KLQlsaXMgICAJcjQsIENGR19JQkFUNkxAaAorCWxpcwlyNCwgQ0ZHX0lCQVQ2TEBoCiAJb3JpICAgICByNCwgcjQsIENGR19JQkFUNkxAbAogCWxpcwlyMywgQ0ZHX0lCQVQ2VUBoCiAJb3JpICAgICByMywgcjMsIENGR19JQkFUNlVAbApAQCAtNTEzLDkgKzUxMyw5IEBACiAJaXN5bmMKIAogCS8qIERCQVQgNiAqLwotCWxpcyAgIAlyNCwgQ0ZHX0RCQVQ2TEBoCisJbGlzCXI0LCBDRkdfREJBVDZMQGgKIAlvcmkgICAgIHI0LCByNCwgQ0ZHX0RCQVQ2TEBsCi0JbGlzICAgCXIzLCBDRkdfREJBVDZVQGgKKwlsaXMJcjMsIENGR19EQkFUNlVAaAogCW9yaSAgICAgcjMsIHIzLCBDRkdfREJBVDZVQGwKIAltdHNwciAgIERCQVQ2TCwgcjQKIAltdHNwciAgIERCQVQ2VSwgcjMKZGlmZiAtLWdpdCBhL2NwdS9tcGM4eHgvaTJjLmMgYi9jcHUvbXBjOHh4L2kyYy5jCmluZGV4IDZjNTkzNzQuLmYwNWI2NjYgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4eHgvaTJjLmMKKysrIGIvY3B1L21wYzh4eC9pMmMuYwpAQCAtNTkwLDcgKzU5MCw3IEBACiBpbnQgaTJjX3Byb2JlKHVjaGFyIGNoaXApCiB7CiAJaTJjX3N0YXRlX3Qgc3RhdGU7Ci0gIAlpbnQgcmM7CisJaW50IHJjOwogCXVjaGFyIGJ1ZlsxXTsKIAogCWkyY19pbml0KENGR19JMkNfU1BFRUQsIENGR19JMkNfU0xBVkUpOwpkaWZmIC0tZ2l0IGEvY3B1L21wYzh4eC9zY2MuYyBiL2NwdS9tcGM4eHgvc2NjLmMKaW5kZXggNzQ0ZGNkZC4uMDlhM2RiMSAxMDA2NDQKLS0tIGEvY3B1L21wYzh4eC9zY2MuYworKysgYi9jcHUvbXBjOHh4L3NjYy5jCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEZpbGU6ICBzY2MuYwogICogRGVzY3JpcHRpb246Ci0gKiAJQmFzaWMgRVQgSFcgaW5pdGlhbGl6YXRpb24gYW5kIHBhY2tldCBSWC9UWCByb3V0aW5lcworICoJQmFzaWMgRVQgSFcgaW5pdGlhbGl6YXRpb24gYW5kIHBhY2tldCBSWC9UWCByb3V0aW5lcwogICoKICAqIE5PVEUgIDw8PElNUE9SVEFOVDogIFBMRUFTRSBSRUFEPj4+OgogICogICAgIERvIG5vdCBjYWNoZSBSeC9UeCBidWZmZXJzIQpkaWZmIC0tZ2l0IGEvY3B1L21wYzh4eC92aWRlby5jIGIvY3B1L21wYzh4eC92aWRlby5jCmluZGV4IDkxOGRlNjcuLjhiZjhlNDYgMTAwNjQ0Ci0tLSBhL2NwdS9tcGM4eHgvdmlkZW8uYworKysgYi9jcHUvbXBjOHh4L3ZpZGVvLmMKQEAgLTExNSw5ICsxMTUsOSBAQAogI2RlZmluZSBWSURFT19CVVJTVF9MRU4JCShWSURFT19DT0xTLzgpCiAKICNpZmRlZiBWSURFT19NT0RFX1lVWVYKLSNkZWZpbmUgVklERU9fQkdfQ09MIAkweDgwRDg4MEQ4CS8qIEJhY2tncm91bmQgY29sb3IgaW4gWVVZViBmb3JtYXQgKi8KKyNkZWZpbmUgVklERU9fQkdfQ09MCTB4ODBEODgwRDgJLyogQmFja2dyb3VuZCBjb2xvciBpbiBZVVlWIGZvcm1hdCAqLwogI2Vsc2UKLSNkZWZpbmUgVklERU9fQkdfQ09MIAkweEY4RjhGOEY4CS8qIEJhY2tncm91bmQgY29sb3IgaW4gUkdCIGZvcm1hdCAqLworI2RlZmluZSBWSURFT19CR19DT0wJMHhGOEY4RjhGOAkvKiBCYWNrZ3JvdW5kIGNvbG9yIGluIFJHQiBmb3JtYXQgKi8KICNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwpkaWZmIC0tZ2l0IGEvY3B1L25pb3MvYXNtaS5jIGIvY3B1L25pb3MvYXNtaS5jCmluZGV4IGNlMjg2M2UuLmMyY2Q4ZmUgMTAwNjQ0Ci0tLSBhL2NwdS9uaW9zL2FzbWkuYworKysgYi9jcHUvbmlvcy9hc21pLmMKQEAgLTE4Myw3ICsxODMsNyBAQAogICogRGV2aWNlIGluZm9ybWF0aW9uCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiB0eXBlZGVmIHN0cnVjdCBhc21pX2RldmluZm9fdCB7Ci0JY29uc3QgY2hhciAJKm5hbWU7CQkvKiBEZXZpY2UgbmFtZSAqLworCWNvbnN0IGNoYXIJKm5hbWU7CQkvKiBEZXZpY2UgbmFtZSAqLwogCXVuc2lnbmVkIGNoYXIJaWQ7CQkvKiBEZXZpY2Ugc2lsaWNvbiBpZCAqLwogCXVuc2lnbmVkIGNoYXIJc2l6ZTsJCS8qIFRvdGFsIHNpemUgbG9nMihieXRlcykqLwogCXVuc2lnbmVkIGNoYXIJbnVtX3NlY3RzOwkvKiBOdW1iZXIgb2Ygc2VjdG9ycyAqLwpkaWZmIC0tZ2l0IGEvY3B1L25pb3Mvc3RhcnQuUyBiL2NwdS9uaW9zL3N0YXJ0LlMKaW5kZXggY2IxYWYzYy4uOWU3Mzk0MSAxMDA2NDQKLS0tIGEvY3B1L25pb3Mvc3RhcnQuUworKysgYi9jcHUvbmlvcy9zdGFydC5TCkBAIC0yMDgsNyArMjA4LDcgQEAKICAqIEEgY29udHJvbCByZWdpc3RlciB0aGF0IGNvdW50cyBzeXN0ZW0gY2xvY2sgY3ljbGVzIHdvdWxkIGJlCiAgKiBhIGhhbmR5IGZlYXR1cmUgLS0gaGludCBmb3IgQWx0ZXJhIDstKQogICovCi0gCS5nbG9ibCBkbHlfY2xrcworCS5nbG9ibCBkbHlfY2xrcwogCS8qIEVhY2ggbG9vcCBpcyA0IGluc3RydWN0aW9ucyBhcyBkZWxheSBzbG90IGlzIGFsd2F5cwogCSAqIGV4ZWN1dGVkLiBFYWNoIGluc3RydWN0aW9uIGlzIGFwcHJveGltYXRlbHkgNCBjbG9ja3MKIAkgKiAoYWNjb3JkaW5nIHRvIHNvbWUgbGFtZSBpbmZvIGZyb20gQWx0ZXJhKS4gU28gLi4uCmRpZmYgLS1naXQgYS9jcHUvbmlvczIvc3RhcnQuUyBiL2NwdS9uaW9zMi9zdGFydC5TCmluZGV4IDRjNmU0NzAuLjZjNmYyOTQgMTAwNjQ0Ci0tLSBhL2NwdS9uaW9zMi9zdGFydC5TCisrKyBiL2NwdS9uaW9zMi9zdGFydC5TCkBAIC0xNzgsMjAgKzE3OCwyMCBAQAogICogSW5zdHJ1Y3Rpb24gcGVyZm9ybWFuY2UgdmFyaWVzIGJhc2VkIG9uIHRoZSBjb3JlLiBGb3IgY29yZXMKICAqIHdpdGggaWNhY2hlIGFuZCBzdGF0aWMvZHluYW1pYyBicmFuY2ggcHJlZGljdGlvbiAoSUkvZiwgSUkvcyk6CiAgKgotICogCU5vcm1hbCBBTFUgKGUuZy4gYWRkLCBjbXAsIGV0Yyk6CTEgY3ljbGUKLSAqIAlCcmFuY2ggKGNvcnJlY3RseSBwcmVkaWN0ZWQsIHRha2VuKToJMiBjeWNsZXMKKyAqCU5vcm1hbCBBTFUgKGUuZy4gYWRkLCBjbXAsIGV0Yyk6CTEgY3ljbGUKKyAqCUJyYW5jaCAoY29ycmVjdGx5IHByZWRpY3RlZCwgdGFrZW4pOgkyIGN5Y2xlcwogICoJTmVnYXRpdmUgb2Zmc2V0IGlzIHByZWRpY3RlZCAoSUkvcykuCiAgKgogICogRm9yIGNvcmVzIHdpdGhvdXQgaWNhY2hlIGFuZCBubyBicmFuY2ggcHJlZGljdGlvbiAoSUkvZSk6CiAgKgotICogCU5vcm1hbCBBTFUgKGUuZy4gYWRkLCBjbXAsIGV0Yyk6CTYgY3ljbGVzCi0gKiAJQnJhbmNoIChubyBwcmVkaWN0aW9uKToJCQk2IGN5Y2xlcworICoJTm9ybWFsIEFMVSAoZS5nLiBhZGQsIGNtcCwgZXRjKToJNiBjeWNsZXMKKyAqCUJyYW5jaCAobm8gcHJlZGljdGlvbik6CQkJNiBjeWNsZXMKICAqCiAgKiBGb3Igc2ltcGxpY2l0eSwgaWYgYW4gaW5zdHJ1Y3Rpb24gY2FjaGUgaXMgaW1wbGVtZW50ZWQgd2UKICAqIGFzc3VtZSBJSS9mIG9yIElJL3MuIE90aGVyd2lzZSwgd2UgdXNlIHRoZSBJSS9lLgogICoKICAqLwotIAkuZ2xvYmwgZGx5X2Nsa3MKKwkuZ2xvYmwgZGx5X2Nsa3MKIAogZGx5X2Nsa3M6CiAKZGlmZiAtLWdpdCBhL2NwdS9wcGM0eHgvNHh4X3BjaS5jIGIvY3B1L3BwYzR4eC80eHhfcGNpLmMKaW5kZXggOTQxZDRkYy4uYzI4YzdhYyAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC80eHhfcGNpLmMKKysrIGIvY3B1L3BwYzR4eC80eHhfcGNpLmMKQEAgLTQ2LDcgKzQ2LDcgQEAKICAqICAxMC1EZWMtOTkgICBVcGRhdGVkIFBDSV9Xcml0ZV9DRkdfUmVnIGZvciBwYXNzMiBlcnJhdGEgIzYgICAgICAgICAgICAgICBKV0IKICAqICAxMS1KYW4tMDAgICBFbnN1cmUgUE1NeE1BcyBkaXNhYmxlZCBiZWZvcmUgc2V0dGluZyBQTU14TEFzLiBUaGlzIGlzIG5vdAogICogICAgICAgICAgICAgIHJlYWxseSByZXF1aXJlZCBhZnRlciBhIHJlc2V0IHNpbmNlIFBNTXhNQXMgYXJlIGFscmVhZHkKLSAqIAkgICAgICAgIGRpc2FibGVkIGJ1dCBpcyBhIGdvb2QgcHJhY3RpY2Ugbm9uZXRoZWxlc3MuICAgICAgICAgICAgICAgIEpXQgorICoJICAgICAgICBkaXNhYmxlZCBidXQgaXMgYSBnb29kIHByYWN0aWNlIG5vbmV0aGVsZXNzLiAgICAgICAgICAgICAgICBKV0IKICAqICAxMi1KdW4tMDEgICBzdGVmYW4ucm9lc2VAZXNkLWVsZWN0cm9uaWNzLmNvbQogICogICAgICAgICAgICAgIC0gUENJIGhvc3QvYWRhcHRlciBoYW5kbGluZyByZXdvcmtlZAogICogIDA5LUp1bC0wMSAgIHN0ZWZhbi5yb2VzZUBlc2QtZWxlY3Ryb25pY3MuY29tCmRpZmYgLS1naXQgYS9jcHUvcHBjNHh4LzR4eF9wY2llLmMgYi9jcHUvcHBjNHh4LzR4eF9wY2llLmMKaW5kZXggZjlhMTk4OC4uNTAzZmFjYyAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC80eHhfcGNpZS5jCisrKyBiL2NwdS9wcGM0eHgvNHh4X3BjaWUuYwpAQCAtNDQ0LDggKzQ0NCw4IEBACiAKIC8qCiAgKiBUT0RPOiBkb3VibGUgY2hlY2sgUENJIGV4cHJlc3MgU0RSIGJhc2VkIG9uIHRoZSBsYXRlc3QgdXNlciBtYW51YWwKLSAqIAkJIFNvbWUgcmVnaXN0ZXJzIHNwZWNpZmllZCBoZXJlIG5vIGxvbmdlciBleGlzdC4uIGhhcyB0byBiZQotICogCQkgdXBkYXRlZCBiYXNlZCBvbiB0aGUgZmluYWwgRUFTIHNwZWMuCisgKgkJIFNvbWUgcmVnaXN0ZXJzIHNwZWNpZmllZCBoZXJlIG5vIGxvbmdlciBleGlzdC4uIGhhcyB0byBiZQorICoJCSB1cGRhdGVkIGJhc2VkIG9uIHRoZSBmaW5hbCBFQVMgc3BlYy4KICAqLwogc3RhdGljIGludCBjaGVja19lcnJvcih2b2lkKQogewpkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9pMmMuYyBiL2NwdS9wcGM0eHgvaTJjLmMKaW5kZXggNDdjMjY0ZS4uZDhiZTJjZSAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC9pMmMuYworKysgYi9jcHUvcHBjNHh4L2kyYy5jCkBAIC02MSw3ICs2MSw3IEBACiAJLyogd3JpdGUgMSBpbiBJUlFQIElSUUQgTEEgSUNUIFhGUkEgdG8gY2xlYXIgdGhlc2UgZmllbGRzICovCiAJb3V0XzgoKHU4ICopSUlDX0VYVFNUUywgMHg4Rik7CiAKLSAgICAJLyogUGxhY2UgY2hpcCBpbiB0aGUgcmVzZXQgc3RhdGUgKi8KKwkvKiBQbGFjZSBjaGlwIGluIHRoZSByZXNldCBzdGF0ZSAqLwogCW91dF84KCh1OCAqKUlJQ19YVENOVExTUywgSUlDX1hUQ05UTFNTX1NSU1QpOwogCiAJLyogQ2hlY2sgaWYgYnVzIGlzIGZyZWUgKi8KZGlmZiAtLWdpdCBhL2NwdS9wcGM0eHgva2dkYi5TIGIvY3B1L3BwYzR4eC9rZ2RiLlMKaW5kZXggNDJiOTU0Ni4uNDIyN2E0YyAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC9rZ2RiLlMKKysrIGIvY3B1L3BwYzR4eC9rZ2RiLlMKQEAgLTQ1LDcgKzQ1LDcgQEAKIAlpY2NjaSAgIHIwLHIwCQkvKiBpY2NjaSBpbnZhbGlkYXRlcyB0aGUgZW50aXJlIEkgY2FjaGUgKi8KIAkvKiBkY2FjaGUgKi8KIAlhZGRpICAgIHI2LDAsMHgwMDAwICAgICAvKiBjbGVhciBHUFIgNiAqLwotCWFkZGkgICAgcjcscjAsIDEyOCAJLyogZG8gbG9vcCBmb3IgIyBvZiBkY2FjaGUgbGluZXMgKi8KKwlhZGRpICAgIHI3LHIwLCAxMjgJLyogZG8gbG9vcCBmb3IgIyBvZiBkY2FjaGUgbGluZXMgKi8KIAkJCQkvKiBOT1RFOiBkY2NjaSBpbnZhbGlkYXRlcyBib3RoICovCiAJbXRjdHIgICByNyAgICAgICAgICAgICAgLyogd2F5cyBpbiB0aGUgRCBjYWNoZSAqLwogLi5kY2xvb3A6CmRpZmYgLS1naXQgYS9jcHUvcHBjNHh4L3NwZWVkLmMgYi9jcHUvcHBjNHh4L3NwZWVkLmMKaW5kZXggOGI0ZTY0YS4uZWY0N2ZmYyAxMDA2NDQKLS0tIGEvY3B1L3BwYzR4eC9zcGVlZC5jCisrKyBiL2NwdS9wcGM0eHgvc3BlZWQuYwpAQCAtMTEyNiw3ICsxMTI2LDcgQEAKIAkJbSA9IHN5c0luZm8tPnBsbEZ3ZERpdiAqIHBsYjJ4RGl2ICogMgogCQkJKiBzeXNJbmZvLT5wbGxPcGJEaXYgKiBzeXNJbmZvLT5wbGxFeHRCdXNEaXY7CiAJCWJyZWFrOwotICAgIAljYXNlIFBMTF9GQktfUExMX0xPQ0FMOgorCWNhc2UgUExMX0ZCS19QTExfTE9DQUw6CiAJCWJyZWFrOwogCWRlZmF1bHQ6CiAJCXByaW50ZigiJXMgdW5rbm93biBtXG4iLCBfX0ZVTkNUSU9OX18pOwpkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC9zdGFydC5TIGIvY3B1L3BwYzR4eC9zdGFydC5TCmluZGV4IGE1MTNiNDUuLjAwMDgxNzAgMTAwNjQ0Ci0tLSBhL2NwdS9wcGM0eHgvc3RhcnQuUworKysgYi9jcHUvcHBjNHh4L3N0YXJ0LlMKQEAgLTg1Miw3ICs4NTIsNyBAQAogCW10ZGNjcglyMQkJCS8qIGRhdGEgY2FjaGUgKi8KIAogCWFkZGlzCXIxLHIwLENGR19JTklUX1JBTV9BRERSQGgKLQlvcmkJcjEscjEsQ0ZHX0lOSVRfU1BfT0ZGU0VUCSAgLyogc2V0IHVwIHRoZSBzdGFjayB0byBTRFJBTSAqLworCW9yaQlyMSxyMSxDRkdfSU5JVF9TUF9PRkZTRVQgLyogc2V0IHVwIHRoZSBzdGFjayB0byBTRFJBTSAqLwogCWxpCXIwLCAwCQkJLyogTWFrZSByb29tIGZvciBzdGFjayBmcmFtZSBoZWFkZXIgYW5kICovCiAJc3R3dQlyMCwgLTQocjEpCQkvKiBjbGVhciBmaW5hbCBzdGFjayBmcmFtZSBzbyB0aGF0CSovCiAJc3R3dQlyMCwgLTQocjEpCQkvKiBzdGFjayBiYWNrdHJhY2VzIHRlcm1pbmF0ZSBjbGVhbmx5CSovCkBAIC05NDcsMTEgKzk0NywxMSBAQAogCS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAkvKiBETUEgU3RhdHVzLCBjbGVhciB0byBjb21lIHVwIGNsZWFuICovCiAJLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCWFkZGlzCXIzLHIwLCAweEZGRkYJICAgICAgLyogQ2xlYXIgYWxsIGV4aXN0aW5nIERNQSBzdGF0dXMgKi8KKwlhZGRpcwlyMyxyMCwgMHhGRkZGCQkvKiBDbGVhciBhbGwgZXhpc3RpbmcgRE1BIHN0YXR1cyAqLwogCW9yaQlyMyxyMywgMHhGRkZGCiAJbXRkY3IJZG1hc3IsIHIzCiAKLQlibAlwcGM0MDVlcF9pbml0CSAgICAgIC8qIGRvIHBwYzQwNWVwIHNwZWNpZmljIGluaXQgKi8KKwlibAlwcGM0MDVlcF9pbml0CQkvKiBkbyBwcGM0MDVlcCBzcGVjaWZpYyBpbml0ICovCiAjZW5kaWYgLyogQ09ORklHXzQwNUVQICovCiAKICNpZiBkZWZpbmVkKENGR19PQ01fREFUQV9BRERSKSAmJiBkZWZpbmVkKENGR19PQ01fREFUQV9TSVpFKQpAQCAtMTgwOSwxMyArMTgwOSwxMyBAQAogCSEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCSovCiAJbWZkY3IJcjUsIENQQzBfUExMTVIxCi0Jcmx3aW5tCXI0LHI1LDEsMHgxCSAgICAgICAvKiBnZXQgc3lzdGVtIGNsb2NrIHNvdXJjZSAoU1NDUykgKi8KKwlybHdpbm0JcjQscjUsMSwweDEJCS8qIGdldCBzeXN0ZW0gY2xvY2sgc291cmNlIChTU0NTKSAqLwogCWNtcGkJY3IwLDAscjQsMHgxCiAKLQliZXEgICAgcGxsX2RvbmUJCQkgIC8qIGlmIFNTQ1MgPWInMScgdGhlbiBQTEwgaGFzICovCi0JCQkJCSAgLyogYWxyZWFkeSBiZWVuIHNldCAqLwotCQkJCQkgIC8qIGFuZCBDUFUgaGFzIGJlZW4gcmVzZXQgKi8KLQkJCQkJICAvKiBzbyBza2lwIHRvIG5leHQgc2VjdGlvbiAqLworCWJlcSAgICBwbGxfZG9uZQkJCS8qIGlmIFNTQ1MgPWInMScgdGhlbiBQTEwgaGFzICovCisJCQkJCS8qIGFscmVhZHkgYmVlbiBzZXQgKi8KKwkJCQkJLyogYW5kIENQVSBoYXMgYmVlbiByZXNldCAqLworCQkJCQkvKiBzbyBza2lwIHRvIG5leHQgc2VjdGlvbiAqLwogCiAjaWZkZWYgQ09ORklHX0JVQklOR0EKIAkvKgpAQCAtMTgzNywxMyArMTgzNywxMyBAQAogCWx3eglyNCwgMChyMykKIAlhZGRpcwlyNSwwLE5WUlZGWTFAaAogCWFkZGkJcjUscjUsTlZSVkZZMUBsCi0JY21wCWNyMCwwLHI0LHI1CSAgICAgICAvKiBDb21wYXJlIDFzdCBOVlJBTSBNYWdpYyBudW1iZXIqLworCWNtcAljcjAsMCxyNCxyNQkJLyogQ29tcGFyZSAxc3QgTlZSQU0gTWFnaWMgbnVtYmVyKi8KIAlibmUJLi5ub19wbGxzZXQKIAlhZGRpCXIzLHIzLDQKIAlsd3oJcjQsIDAocjMpCiAJYWRkaXMJcjUsMCxOVlJWRlkyQGgKIAlhZGRpCXI1LHI1LE5WUlZGWTJAbAotCWNtcAljcjAsMCxyNCxyNQkgICAgICAgLyogQ29tcGFyZSAyIE5WUkFNIE1hZ2ljIG51bWJlciAqLworCWNtcAljcjAsMCxyNCxyNQkJLyogQ29tcGFyZSAyIE5WUkFNIE1hZ2ljIG51bWJlciAqLwogCWJuZQkuLm5vX3BsbHNldAogCWFkZGkJcjMscjMsOAkJCS8qIFNraXAgb3ZlciBjb25mX3NpemUgKi8KIAlsd3oJcjQsIDQocjMpCQkvKiBMb2FkIFBMTE1SMSB2YWx1ZSBmcm9tIE5WUkFNICovCkBAIC0xODY3LDcgKzE4NjcsNyBAQAogI2lmIGRlZmluZWQoQ09ORklHX1pFVVMpCiAJbWZkY3IJcjQsIENQQzBfQk9PVAogCWFuZGkuCXI1LCByNCwgQ1BDMF9CT09UX1NFUEBsCi0JYm5lCXN0cmFwXzEgIAkvKiBzZXJpYWwgZWVwcm9tIHByZXNlbnQgKi8KKwlibmUJc3RyYXBfMQkJCS8qIHNlcmlhbCBlZXByb20gcHJlc2VudCAqLwogCWxpcwlyMywweDAwMDAKIAlhZGRpCXIzLHIzLDB4MzAzMAogCWxpcwlyNCwweDgwNDIKQEAgLTE4NzksMTAgKzE4NzksMTAgQEAKIAliCTFmCiAjZW5kaWYKIAotCWFkZGlzCXIzLDAsUExMTVIwX0RFRkFVTFRAaAkgICAgLyogUExMTVIwIGRlZmF1bHQgdmFsdWUgKi8KLQlvcmkJcjMscjMsUExMTVIwX0RFRkFVTFRAbAkgICAvKiAqLwotCWFkZGlzCXI0LDAsUExMTVIxX0RFRkFVTFRAaAkgICAgLyogUExMTVIxIGRlZmF1bHQgdmFsdWUgKi8KLQlvcmkJcjQscjQsUExMTVIxX0RFRkFVTFRAbAkgICAvKiAqLworCWFkZGlzCXIzLDAsUExMTVIwX0RFRkFVTFRAaAkvKiBQTExNUjAgZGVmYXVsdCB2YWx1ZSAqLworCW9yaQlyMyxyMyxQTExNUjBfREVGQVVMVEBsCS8qICovCisJYWRkaXMJcjQsMCxQTExNUjFfREVGQVVMVEBoCS8qIFBMTE1SMSBkZWZhdWx0IHZhbHVlICovCisJb3JpCXI0LHI0LFBMTE1SMV9ERUZBVUxUQGwJLyogKi8KIAogI2lmZGVmIENPTkZJR19UQUlIVQogCWIJMWYKQEAgLTE4OTgsNyArMTg5OCw3IEBACiAjZW5kaWYgLyogQ09ORklHX1RBSUhVICovCiAKIDE6Ci0JYglwbGxfd3JpdGUJCSAgLyogV3JpdGUgdGhlIENQQzBfUExMTVIgd2l0aCBuZXcgdmFsdWUgKi8KKwliCXBsbF93cml0ZQkJLyogV3JpdGUgdGhlIENQQzBfUExMTVIgd2l0aCBuZXcgdmFsdWUgKi8KIAogcGxsX2RvbmU6CiAJLyoKQEAgLTE5MTUsNyArMTkxNSw3IEBACiBwY2lfd2FpdDoKIAliZG56CXBjaV93YWl0CiAKLQlibHIJCQkJICAvKiByZXR1cm4gdG8gbWFpbiBjb2RlICovCisJYmxyCQkJCS8qIHJldHVybiB0byBtYWluIGNvZGUgKi8KIAogLyoKICEtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTkzNiwyMCArMTkzNiwyMCBAQAogcGxsX3dyaXRlOgogCW1mZGNyICByNSwgQ1BDMF9VQ1IKIAlhbmRpcy4gcjUscjUsMHhGRkZGCi0Jb3JpICAgIHI1LHI1LDB4MDEwMQkJIC8qIFN0b3AgdGhlIFVBUlQgY2xvY2tzICovCi0JbXRkY3IgIENQQzBfVUNSLHI1CQkgLyogQmVmb3JlIGNoYW5naW5nIFBMTCAqLworCW9yaSAgICByNSxyNSwweDAxMDEJCS8qIFN0b3AgdGhlIFVBUlQgY2xvY2tzICovCisJbXRkY3IgIENQQzBfVUNSLHI1CQkvKiBCZWZvcmUgY2hhbmdpbmcgUExMICovCiAKIAltZmRjciAgcjUsIENQQzBfUExMTVIxCi0Jcmx3aW5tIHI1LHI1LDAsMHg3RkZGRkZGRgkgLyogRGlzYWJsZSBQTEwgKi8KKwlybHdpbm0gcjUscjUsMCwweDdGRkZGRkZGCS8qIERpc2FibGUgUExMICovCiAJbXRkY3IJQ1BDMF9QTExNUjEscjUKLQlvcmlzICAgcjUscjUsMHg0MDAwCQkgLyogU2V0IFBMTCBSZXNldCAqLworCW9yaXMgICByNSxyNSwweDQwMDAJCS8qIFNldCBQTEwgUmVzZXQgKi8KIAltdGRjcglDUEMwX1BMTE1SMSxyNQogCi0JbXRkY3IJQ1BDMF9QTExNUjAscjMJCSAvKiBTZXQgY2xvY2sgZGl2aWRlcnMgKi8KLQlybHdpbm0gcjUscjQsMCwweDNGRkZGRkZGCSAvKiBSZXNldCAmIEJ5cGFzcyBuZXcgUExMIGRpdmlkZXJzICovCi0Jb3JpcyAgIHI1LHI1LDB4NDAwMAkJIC8qIFNldCBQTEwgUmVzZXQgKi8KLQltdGRjcglDUEMwX1BMTE1SMSxyNQkJIC8qIFNldCBjbG9jayBkaXZpZGVycyAqLwotCXJsd2lubSByNSxyNSwwLDB4QkZGRkZGRkYJIC8qIENsZWFyIFBMTCBSZXNldCAqLworCW10ZGNyCUNQQzBfUExMTVIwLHIzCQkvKiBTZXQgY2xvY2sgZGl2aWRlcnMgKi8KKwlybHdpbm0gcjUscjQsMCwweDNGRkZGRkZGCS8qIFJlc2V0ICYgQnlwYXNzIG5ldyBQTEwgZGl2aWRlcnMgKi8KKwlvcmlzICAgcjUscjUsMHg0MDAwCQkvKiBTZXQgUExMIFJlc2V0ICovCisJbXRkY3IJQ1BDMF9QTExNUjEscjUJCS8qIFNldCBjbG9jayBkaXZpZGVycyAqLworCXJsd2lubSByNSxyNSwwLDB4QkZGRkZGRkYJLyogQ2xlYXIgUExMIFJlc2V0ICovCiAJbXRkY3IJQ1BDMF9QTExNUjEscjUKIAogCQkvKgpAQCAtMTk3MCw5ICsxOTcwLDkgQEAKIAkgKiBOb3Qgc3VyZSBpZiB0aGlzIGlzIG5lZWRlZC4uLgogCSAqLwogCWFkZGlzIHIzLDAsMHgxMDAwCi0JbXRzcHIgZGJjcjAscjMJCSAgICAgLyogVGhpcyB3aWxsIGNhdXNlIGEgQ1BVIGNvcmUgcmVzZXQsIGFuZCAqLwotCQkJCSAgICAgLyogZXhlY3V0aW9uIHdpbGwgY29udGludWUgZnJvbSB0aGUgcG93ZXJvbiAqLwotCQkJCSAgICAgLyogdmVjdG9yIG9mIDB4ZmZmZmZmZmMgKi8KKwltdHNwciBkYmNyMCxyMwkJCS8qIFRoaXMgd2lsbCBjYXVzZSBhIENQVSBjb3JlIHJlc2V0LCBhbmQgKi8KKwkJCQkJLyogZXhlY3V0aW9uIHdpbGwgY29udGludWUgZnJvbSB0aGUgcG93ZXJvbiAqLworCQkJCQkvKiB2ZWN0b3Igb2YgMHhmZmZmZmZmYyAqLwogI2VuZGlmIC8qIENPTkZJR180MDVFUCAqLwogCiAjaWYgZGVmaW5lZChDT05GSUdfNDQwKQpkaWZmIC0tZ2l0IGEvY3B1L3BwYzR4eC91c2Jfb2hjaS5jIGIvY3B1L3BwYzR4eC91c2Jfb2hjaS5jCmluZGV4IDdkYmIyODguLjVkYmQ4NDIgMTAwNjQ0Ci0tLSBhL2NwdS9wcGM0eHgvdXNiX29oY2kuYworKysgYi9jcHUvcHBjNHh4L3VzYl9vaGNpLmMKQEAgLTE2MDAsNyArMTYwMCw3IEBACiAJZ29oY2kuc2xlZXBpbmcgPSAwOwogCWdvaGNpLmlycSA9IC0xOwogI2lmIGRlZmluZWQoQ09ORklHXzQ0MEVQKQotIAlnb2hjaS5yZWdzID0gKHN0cnVjdCBvaGNpX3JlZ3MgKikoQ0ZHX1BFUklQSEVSQUxfQkFTRSB8IDB4MTAwMCk7CisJZ29oY2kucmVncyA9IChzdHJ1Y3Qgb2hjaV9yZWdzICopKENGR19QRVJJUEhFUkFMX0JBU0UgfCAweDEwMDApOwogI2VsaWYgZGVmaW5lZChDT05GSUdfNDQwRVBYKSB8fCBkZWZpbmVkKENGR19VU0JfSE9TVCkKIAlnb2hjaS5yZWdzID0gKHN0cnVjdCBvaGNpX3JlZ3MgKikoQ0ZHX1VTQl9IT1NUKTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvY3B1L3B4YS9pMmMuYyBiL2NwdS9weGEvaTJjLmMKaW5kZXggOTJkZDE5Zi4uZGY1MzdjNCAxMDA2NDQKLS0tIGEvY3B1L3B4YS9pMmMuYworKysgYi9jcHUvcHhhL2kyYy5jCkBAIC00NSw3ICs0NSw3IEBACiAjaW5jbHVkZSA8YXNtL2FyY2gvcHhhLXJlZ3MuaD4KICNpbmNsdWRlIDxpMmMuaD4KIAotLyojZGVmaW5lCURFQlVHX0kyQyAJMQkvIyMjKiBhY3RpdmF0ZSBsb2NhbCBkZWJ1Z2dpbmcgb3V0cHV0ICAqLworLyojZGVmaW5lCURFQlVHX0kyQwkxCS8jIyMqIGFjdGl2YXRlIGxvY2FsIGRlYnVnZ2luZyBvdXRwdXQgICovCiAjZGVmaW5lIEkyQ19QWEFfU0xBVkVfQUREUgkweDEJLyogc2xhdmUgcHhhIHVuaXQgYWRkcmVzcyAgICAgICAgICAgKi8KIAogI2lmIChDRkdfSTJDX1NQRUVEID09IDQwMDAwMCkKQEAgLTE5MSw4ICsxOTEsOCBAQAogCQkvKiBzdGFydCByZWNlaXZlICovCiAJCUlDUiAmPSB+SUNSX1NUQVJUOwogCQlJQ1IgJj0gfklDUl9TVE9QOwotCQlpZiAobXNnLT5jb25kaXRpb24gPT0gSTJDX0NPTkRfU1RBUlQpIAkgIElDUiB8PSBJQ1JfU1RBUlQ7Ci0JCWlmIChtc2ctPmNvbmRpdGlvbiA9PSBJMkNfQ09ORF9TVE9QKSAgCSAgSUNSIHw9IElDUl9TVE9QOworCQlpZiAobXNnLT5jb25kaXRpb24gPT0gSTJDX0NPTkRfU1RBUlQpCSAgSUNSIHw9IElDUl9TVEFSVDsKKwkJaWYgKG1zZy0+Y29uZGl0aW9uID09IEkyQ19DT05EX1NUT1ApCSAgSUNSIHw9IElDUl9TVE9QOwogCQlpZiAobXNnLT5hY2tuYWNrICAgPT0gSTJDX0FDS05BS19TRU5ETkFLKSBJQ1IgfD0gIElDUl9BQ0tOQUs7CiAJCWlmIChtc2ctPmFja25hY2sgICA9PSBJMkNfQUNLTkFLX1NFTkRBQ0spIElDUiAmPSB+SUNSX0FDS05BSzsKIAkJSUNSICY9IH5JQ1JfQUxESUU7CkBAIC0yNjcsNyArMjY3LDcgQEAKICAqIGkyY19wcm9iZTogLSBUZXN0IGlmIGEgY2hpcCBhbnN3ZXJzIGZvciBhIGdpdmVuIGkyYyBhZGRyZXNzCiAgKgogICogQGNoaXA6CWFkZHJlc3Mgb2YgdGhlIGNoaXAgd2hpY2ggaXMgc2VhcmNoZWQgZm9yCi0gKiBAcmV0dXJuOiAJMCBpZiBhIGNoaXAgd2FzIGZvdW5kLCAtMSBvdGhlcndoaXNlCisgKiBAcmV0dXJuOgkwIGlmIGEgY2hpcCB3YXMgZm91bmQsIC0xIG90aGVyd2hpc2UKICAqLwogCiBpbnQgaTJjX3Byb2JlKHVjaGFyIGNoaXApCmRpZmYgLS1naXQgYS9jcHUvczNjNDRiMC9zdGFydC5TIGIvY3B1L3MzYzQ0YjAvc3RhcnQuUwppbmRleCA3YWZmZTg3Li4xZDg4YzFjIDEwMDY0NAotLS0gYS9jcHUvczNjNDRiMC9zdGFydC5TCisrKyBiL2NwdS9zM2M0NGIwL3N0YXJ0LlMKQEAgLTE4OCw3ICsxODgsNyBAQAogI2RlZmluZSBXVENPTiAoMHgwMWMwMDAwMCsweDEzMDAwMCkKIGNwdV9pbml0X2NyaXQ6CiAJLyogZGlzYWJsZSB3YXRjaCBkb2cgKi8KLQlsZHIgCXIwLCA9V1RDT04KKwlsZHIJcjAsID1XVENPTgogCWxkcglyMSwgPTB4MAogCXN0cglyMSwgW3IwXQogCkBAIC0yMTEsNyArMjExLDcgQEAKIAlsZHIJcjEsID1QTExDT04KIAogI2lmIENPTkZJR19TM0M0NEIwX0NMT0NLX1NQRUVEPT02NgotCWxkcglyMCwgPTB4MzQwMzEgCS8qIDY2TUh6IChRdWFydHo9MTFNSHopICovCisJbGRyCXIwLCA9MHgzNDAzMQkvKiA2Nk1IeiAoUXVhcnR6PTExTUh6KSAqLwogI2VsaWYgQ09ORklHX1MzQzQ0QjBfQ0xPQ0tfU1BFRUQ9PTc1CiAJbGRyCXIwLCA9MHg2MTBjMSAvKkIyOiBYdGFsPTIwbWh6IEZjbGs9NzVNSHogICovCiAjZWxzZQpkaWZmIC0tZ2l0IGEvY3B1L3NhMTEwMC9zdGFydC5TIGIvY3B1L3NhMTEwMC9zdGFydC5TCmluZGV4IDQzMWVlNjUuLjkxMDY1MGQgMTAwNjQ0Ci0tLSBhL2NwdS9zYTExMDAvc3RhcnQuUworKysgYi9jcHUvc2ExMTAwL3N0YXJ0LlMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogY2xlYXJfYnNzOgogCWxkcglyMCwgX2Jzc19zdGFydAkJLyogZmluZCBzdGFydCBvZiBic3Mgc2VnbWVudCAgICAgICAgKi8KIAlsZHIJcjEsIF9ic3NfZW5kCQkvKiBzdG9wIGhlcmUgICAgICAgICAgICAgICAgICAgICAgICAqLwotCW1vdiAJcjIsICMweDAwMDAwMDAwCQkvKiBjbGVhciAgICAgICAgICAgICAgICAgICAgICAgICAgICAqLworCW1vdglyMiwgIzB4MDAwMDAwMDAJCS8qIGNsZWFyICAgICAgICAgICAgICAgICAgICAgICAgICAgICovCiAKIGNsYnNzX2w6c3RyCXIyLCBbcjBdCQkvKiBjbGVhciBsb29wLi4uICAgICAgICAgICAgICAgICAgICAqLwogCWFkZAlyMCwgcjAsICM0CkBAIC0zNDksMzEgKzM0OSwzMSBAQAogdW5kZWZpbmVkX2luc3RydWN0aW9uOgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fdW5kZWZpbmVkX2luc3RydWN0aW9uCisJYmwJZG9fdW5kZWZpbmVkX2luc3RydWN0aW9uCiAKIAkuYWxpZ24JNQogc29mdHdhcmVfaW50ZXJydXB0OgogCWdldF9iYWRfc3RhY2sKIAliYWRfc2F2ZV91c2VyX3JlZ3MKLQlibCAJZG9fc29mdHdhcmVfaW50ZXJydXB0CisJYmwJZG9fc29mdHdhcmVfaW50ZXJydXB0CiAKIAkuYWxpZ24JNQogcHJlZmV0Y2hfYWJvcnQ6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19wcmVmZXRjaF9hYm9ydAorCWJsCWRvX3ByZWZldGNoX2Fib3J0CiAKIAkuYWxpZ24JNQogZGF0YV9hYm9ydDoKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2RhdGFfYWJvcnQKKwlibAlkb19kYXRhX2Fib3J0CiAKIAkuYWxpZ24JNQogbm90X3VzZWQ6CiAJZ2V0X2JhZF9zdGFjawogCWJhZF9zYXZlX3VzZXJfcmVncwotCWJsIAlkb19ub3RfdXNlZAorCWJsCWRvX25vdF91c2VkCiAKICNpZmRlZiBDT05GSUdfVVNFX0lSUQogCkBAIC0zODEsNyArMzgxLDcgQEAKIGlycToKIAlnZXRfaXJxX3N0YWNrCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2lycQorCWJsCWRvX2lycQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAJLmFsaWduCTUKQEAgLTM4OSw3ICszODksNyBAQAogCWdldF9maXFfc3RhY2sKIAkvKiBzb21lb25lIG91Z2h0IHRvIHdyaXRlIGEgbW9yZSBlZmZpY3Rpb24gZmlxX3NhdmVfdXNlcl9yZWdzICovCiAJaXJxX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2ZpcQorCWJsCWRvX2ZpcQogCWlycV9yZXN0b3JlX3VzZXJfcmVncwogCiAjZWxzZQpAQCAtMzk4LDEzICszOTgsMTMgQEAKIGlycToKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2lycQorCWJsCWRvX2lycQogCiAJLmFsaWduCTUKIGZpcToKIAlnZXRfYmFkX3N0YWNrCiAJYmFkX3NhdmVfdXNlcl9yZWdzCi0JYmwgCWRvX2ZpcQorCWJsCWRvX2ZpcQogCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvY3B1L3NoNC9jYWNoZS5jIGIvY3B1L3NoNC9jYWNoZS5jCmluZGV4IDRlNzQ0ZDcuLjM3NzAwNWMgMTAwNjQ0Ci0tLSBhL2NwdS9zaDQvY2FjaGUuYworKysgYi9jcHUvc2g0L2NhY2hlLmMKQEAgLTcyLDkgKzcyLDkgQEAKIAlqdW1wX3RvX1AyKCk7CiAJZm9yIChpID0gMDsgaSA8IENBQ0hFX09DX05VTV9FTlRSSUVTOyBpKyspewogCQlmb3IgKGogPSAwOyBqIDwgQ0FDSEVfT0NfTlVNX1dBWVM7IGorKykgewotICAgICAgCQkJYWRkciA9IENBQ0hFX09DX0FERFJFU1NfQVJSQVkgfCAoaiA8PCBDQUNIRV9PQ19XQVlfU0hJRlQpCisJCQlhZGRyID0gQ0FDSEVfT0NfQUREUkVTU19BUlJBWSB8IChqIDw8IENBQ0hFX09DX1dBWV9TSElGVCkKIAkJCQl8IChpIDw8IENBQ0hFX09DX0VOVFJZX1NISUZUKTsKLSAgICAgIAkJCWRhdGEgPSBpbmwoYWRkcik7CisJCQlkYXRhID0gaW5sKGFkZHIpOwogCQkJaWYgKGRhdGEgJiBDQUNIRV9VUERBVEVEKSB7CiAJCQkJZGF0YSAmPSB+Q0FDSEVfVVBEQVRFRDsKIAkJCQlvdXRsKGRhdGEsIGFkZHIpOwo=